Why am I getting this error:
Uncaught SyntaxError: Unexpected token <
c.b.extend.globalEval jquery-1.4.4.min.js:32
c.extend.httpData jquery-1.4.4.min.js:144
c.extend.ajax.L.w.onreadystatechange jquery-1.4.4.min.js:140
This error doesn't point me to a place in my JS that is triggering this issue. Just the jQuery min file.
How do I debug this and fix it ?
Edit1: Here are some screenshots of my call stack around this error. Still not sure though, which file has the syntax error that is being called by jQuery.
Edit 2:
Here are some of my AJAX calls:
$('form#project-ajax-form').submit(function(){
if(compv.steps.selectedClient.id != null){
$('input#project_client_id').val(compv.steps.selectedClient.id);
console.debug("Project Client Value: " + $('input#project_client_id').val());
return true;
}
console.debug("Project Client Value not found");
compv.tools.clientError();
return false;
});
$('#project-ajax-form')
.bind("ajax:success", function(evt, data, status, xhr){
compv.updateStepView('project', xhr);
});
$('#client-ajax-form')
.bind("ajax:success", function(evt, data, status, xhr){
console.log("Calling Step View");
compv.updateStepView('client', xhr);
});
$('form#stage-ajax-form').submit(function(){
if(compv.steps.selectedProject.id != null){
$('input#stage_project_id').val(compv.steps.selectedProject.id);
console.debug("Stage Project Value: " + $('input#stage_project开发者_Go百科_id').val());
return true;
}
console.debug("Stage Project Value not found");
compv.tools.clientError();
return false;
});
$('#stage-ajax-form')
.bind("ajax:success", function(evt, data, status, xhr){
compv.updateStepView('stage', xhr);
});
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader("Accept", "text/javascript");
}
});
$('.ajax-form')
.bind("ajax:success", function(evt, data, status, xhr){
var $form = $(this);
console.log("Form Success: %s", $(this).attr('id'));
// Reset fields and any validation errors, so form can be used again, but leave hidden_field values intact.
$form.find('textarea,input[type="text"],input[type="file"]').val("");
$form.find('div.validation-error').empty();
})
.bind("ajax:failure", function(evt, xhr, status, error){
var $form = $(this),
errors,
errorText;
console.log("Form Failure: %s", $(this).attr('id'));
try {
// Populate errorText with the comment errors
errors = $.parseJSON(xhr.responseText);
} catch(err) {
// If the responseText is not valid JSON (like if a 500 exception was thrown), populate errors with a generic error message.
console.error("Server Error for Form: %s", $(this).attr('id'));
errors = {"Server Error": "Please reload the page and try again"};
}
// Build an unordered list from the list of errors
errorText = "There were errors: \n<ul>";
for ( error in errors ) {
errorText += "<li>" + error + ': ' + errors[error] + "</li> ";
}
errorText += "</ul>";
// Insert error list into form
var errorDiv = $form.find("div.validation-error");
errorDiv.html(errorText);
errorDiv.show(300);
});
The callstack indicates that jQuery is calling eval
from the response to an AJAX request.
You're calling getScript
for a Javascript file with a syntax error.
To answer your stated question, you can debug this by switching to the debug version of jQuery (not .min
) and using a debugger, such as Firebug or Chrome's Developer Tools.
This was answered in another question: Uncaught SyntaxError: Unexpected Token - jQuery - Help!
精彩评论