Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 捕获jquery ajax错误回调中的错误?_C#_Php_Jquery_Asp.net_Ajax - Fatal编程技术网

C# 捕获jquery ajax错误回调中的错误?

C# 捕获jquery ajax错误回调中的错误?,c#,php,jquery,asp.net,ajax,C#,Php,Jquery,Asp.net,Ajax,我倾向于在我的应用程序中对服务器端使用大量jqueryajax调用 通常,当服务器端出现问题时,我会序列化一条errormessage并作为响应发送(JSON)。类似于 { "ErrorMessage" : "Something went wrong: " + ex.message } 我想知道的是,是否有任何方法可以使jQueryAjaxerror回调中的错误结束,而不是success 有没有办法做到这一点?还是我应该坚持我处理错误的老方法?不管你提供的是PHP还是ASP.NET+c的例子

我倾向于在我的应用程序中对服务器端使用大量jqueryajax调用

通常,当服务器端出现问题时,我会序列化一条errormessage并作为响应发送(JSON)。类似于

 { "ErrorMessage" : "Something went wrong: " + ex.message }
我想知道的是,是否有任何方法可以使jQueryAjax
error
回调中的错误结束,而不是
success


有没有办法做到这一点?还是我应该坚持我处理错误的老方法?不管你提供的是PHP还是ASP.NET+c的例子,我都感兴趣。谢谢

您可以让它们在jQuery上的
错误回调中结束。在ASP.NET中,您只需将web.config中的
自定义错误
部分更改为
,但是如果您使用此方法,请确保将web服务放在单独的文件夹中,以便只对web服务调用执行此操作,而不对整个站点关闭此操作;例如:

<location Path="/Services"> <!--Your web service lives here -->
    <system.web>
        <customErrors mode="Off" />
    </system.web>
</location>

这样,web方法上抛出的任何异常都将在jQuery中的
错误回调中处理


您可以让异常传播而不在web方法上缓存它,也可以捕获它并重新显示一条更“用户友好”的消息。

这可以使用jQuery 1.5+中的
延迟的
对象。Ben Nadel有一些例子,你可以看看这里和这里

下面是其JavaScript代码的简化版本

var request = $.ajax({
    type: "post",
    url: "./web_service.cfm",
    dataType: "json"
});

request = request.pipe(

    // Filter the SUCCESS responses from the API.
    function (response) {

        // real success
        if (response.success) {
            return (response);
        }
        else {
            // The response is actually a FAIL even though it
            // came through as a success (200). Convert this
            // promise resolution to a FAIL.
            return (
                $.Deferred().reject(response)
            );
        }
    },

    // Filter the FAIL responses from the API.
    function (response) {
        return ({
            success: false,
            data: null,
            errors: ["Unexpected error: " + response.status + " " + response.statusText]
        });

    }

);


// Now that our API response has been filtered, let's attach
// our success and fail handlers to the promise resolution.
request.then(

    function (response) {
        console.log("Success!!!", response);
    },

    function (response) {
        console.log("Fail!!!", response);
    }

);

啊,好的,但我想错误将作为asp.net默认错误页面返回为HTML而不是JSON?
请求、状态、错误将作为JSON对象返回。您可以执行如下操作:
alert(request.responseText)。请看这里: