如果服务器端没有回显任何内容,ajax如何知道它是失败还是成功?
$.ajax(error:..,success:..)
我在测试中遇到了这个例外:
未被捕的例外:[例外...... “组件返回失败代码: 0x80040111(NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.statusText]” nsresult:“0x80040111 (NS_ERROR_NOT_AVAILABLE)“位置: “JS框架:: http://localhost/script/tab.js :: anonymous :: line 69“data:no]
服务器端代码是:
$id = process();
为了测试,我在进程()中有 exit();
这是异常的原因吗?如果是,为什么?
修改 我查看导致异常的行,它是$ .ajax()
的错误处理函数error:function(XMLHttpRequest, textStatus, errorThrown){
alert(XMLHttpRequest.statusText);alert(textStatus);alert(errorThrown);
}
这里有什么不对吗?
答案 0 :(得分:1)
httprequest还会返回一个状态,例如200 == ok,404 ==未找到,12152 ==连接由服务器关闭等等。 只需阅读状态ID是什么意思,这样你就可以找到它们。您也可以出于调试原因,只需将myhttprequest.status写入文档,它就会显示它返回的状态。
答案 1 :(得分:0)
这取决于请求返回的状态代码。成功请求返回的状态代码范围为2xx,错误范围为4xx的5xx。
有关详细信息,请参阅Wikipedia: List of HTTP status codes。
答案 2 :(得分:0)
它仍然会从服务器获得响应,其中数据部分为空。如果它根本没有响应,那将是一个错误。
答案 3 :(得分:0)
http://docs.jquery.com/Ajax/jQuery.ajax#options
提供成功和错误选项这些函数将在调用后调用。
答案 4 :(得分:0)
您可以获得四种可能的方案:
在任何情况下,所有错误场景都由Javascript核心的XMLHttpRequest实现处理 - jQuery只是用稍微整洁的界面包装它。
在您的情况下(现在您已提供了更多信息)我建议您使用Firebug查看服务器对您的请求的响应。也就是说,你不应该从服务器获得任何不适当的异常,JS应该为所有上述情况调用相同的错误回调。
答案 5 :(得分:0)
$.ajax(error:..,success:..)
应该是
$.ajax( { error: function( ){ } } );
如果就是这样,抱歉老兄,那花了那么多时间会很烦人,哈哈
答案 6 :(得分:0)
我通过在ajax调用中指定超时来修复此问题。在X时间之后,ajax超时才放弃。即使页面最终返回数据,ajax对象也放弃并保释,但抛出了这个错误。