我有一个使用jquery ajax调用的web方法。我点击了错误回调。很好-我以为我会分析该错误-但这是未定义的错误。
错误值不确定的可能性有哪些?如果是个小错误,如何解决呢?
注意:xhr
,status
和error
未定义。
注意:我使用的是Chrome 35和IE 8版本
CODE
$(document).ready(function () {
function errorFunction(xhr, status, error) {
console.log(xhr);
if (xhr == 'undefined' || xhr == undefined) {
alert('undefined');
} else {
alert('object is there');
}
alert(status);
alert(error);
}
$.ajax({
type: "POST",
url: "admPlantParametersViewEdit.aspx/GetResult",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("success");
alert(msg.d);
},
error: errorFunction()
});
});
最佳答案
您需要传递对该函数的引用,因此请更改以下内容:
error: errorFunction()
对此:
error: errorFunction
当您将parens放到那里时,您实际上是在立即调用该函数并将其返回。没有括号,它只是对函数的引用,以后可以由jQuery ajax基础结构调用该函数。
为了进一步了解正在发生的情况,您的代码
error: errorFunction()
是不带任何参数立即调用errorFunction()
(这是您在调试中看到的内容),然后从该函数中获取返回值(即undefined
),然后将其放入数据结构中传递给了ajax调用。因此,基本上,您正在执行以下操作:$(document).ready(function () {
function errorFunction(xhr, status, error) {
console.log(xhr);
if (xhr == 'undefined' || xhr == undefined) {
alert('undefined');
} else {
alert('object is there');
}
alert(status);
alert(error);
}
// obviously, not what you intended
errorFunction();
$.ajax({
type: "POST",
url: "admPlantParametersViewEdit.aspx/GetResult",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("success");
alert(msg.d);
},
// also not what you intended
error: undefined
});
});
如果您不在其他地方使用
errorFunction()
,那么更常见的方法是像使用success
处理程序那样内联定义它:$(document).ready(function () {
$.ajax({
type: "POST",
url: "admPlantParametersViewEdit.aspx/GetResult",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("success");
alert(msg.d);
},
error: function(xhr, status, error) {
console.log(xhr);
if (xhr == 'undefined' || xhr == undefined) {
alert('undefined');
} else {
alert('object is there');
}
alert(status);
alert(error);
}
});
});