我有一个使用jquery ajax调用的web方法。我点击了错误回调。很好-我以为我会分析该错误-但这是未定义的错误。

错误值不确定的可能性有哪些?如果是个小错误,如何解决呢?

注意:xhrstatuserror未定义。

注意:我使用的是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);
        }
    });
});

10-05 20:42
查看更多