请求回调'textStatus'的状态

时间:2010-11-23 15:46:11

标签: jquery

以下代码运行正常,但唯一的问题是没有给我textStatus。我需要做什么才能获得textStatus

 var url = "http://host/MyServiceImpl.svc/GetCount?method=?";
        $.ajax({  
            dataType: 'jsonp',
            data: { Id: '1' },  
            jsonp: 'jsonp_callback',  
            url: url,  
            success: function (json, textStatus) {
                alert(json.d);
                alert(textStatus);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                debugger
            }
        });

$.getJSON(url, { Id: '1'},
  function (data, textStatus) {
         alert(textStatus);
});

1 个答案:

答案 0 :(得分:1)

JsonP的工作原理是将标记写入文档,目标Url作为源。然后服务器在函数调用中将响应包装起来。

somecallback( your data )  

这样做的缺点是没有使用XMLHttpRequest,因此jsonP没有“真正的”错误检测。所以基本上它不起作用,因为jsonP本身就是一个黑客。

这就是说有一个简单的解决方法,涵盖了大多数需要发出故障信号的情况。让返回的json具有.Success属性,可能还有.ErrorMessage。我通常使用这种结构的对象:

{ Success: true|false, ErrorMessage: "", Data:json}   
当然,404或者500的问题仍然会导致问题,但关键是要在服务jsonP时尽量避免使用。