如何从AJAX调用和函数中抛出异常?

时间:2013-07-17 23:54:57

标签: javascript jquery exception-handling scope


假如我在函数中有这个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出现此错误。

1 个答案:

答案 0 :(得分: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;
        }
    });
}