0


假设我在函数中有这个 jQuery AJAX 调用:

function callPageMethod(methodName, parameters) {
    var pagePath = window.location.href;

    $.ajax({
        type: "POST",
        url: pagePath + "/" + methodName,
        contentType: "application/json; charset=utf-8",
        data: parameters,
        dataType: "json",
        success: function (response) {
            alert("ajax successful!");
        },
        error: function (response) {

            // this line is not working!
            throw response.responseText;
        }
    });
} // end of function


...我在 Visual Studio 2010 中收到此错误:

Microsoft JScript runtime error: Exception thrown and not caught.


似乎这个问题与 Visual Studio 无关,但特定于 javascript。

例如,我可以在$.ajax调用之前在这个函数中声明一个变量,将它赋值给它error:,然后在调用之后throw它从函数中取出没有问题...... 那么我怎样才能以这种方式从嵌套函数中抛出错误? 如果可能的话,我想在这个函数之外出现这个错误。 $.ajax



catch

4

1 回答 1

0


所以,这里有一些我发现的可能的解决方案:


   1 -- 为变量error赋值,并在 $.ajax调用后抛出:

function callPageMethod(methodName, parameters) {
    var errorValue = null;

    $.ajax({
        ...
        ...
        ...
        error: function (response) {
            errorValue = response.responseText;
        }
    });

    if (errorValue != null) {
        throw errorValue;
    }
}


   2 -- 使$.ajax调用同步

function callPageMethod(methodName, parameters) {
    var errorValue = null;

    $.ajax({
        ...
        ...
        ...
        async: false,
        error: function (response) {

            // now it works:
            throw response.responseText;
        }
    });
}
于 2013-07-22T14:48:39.397 回答