为什么当响应状态为200 / OK时调用$ .ajax()'error'函数?

时间:2013-04-02 19:16:23

标签: jquery asp.net-web-api jsonp

我正在尝试使用JQuery $ .ajax()从我的WebAPI“获取”数据。这是我的代码:

$.ajax({
              type: "GET",
              url: "http://localhost:62412/api/RandomData?startTime=2013-02-23%2005%3A00%3A00&callback=?",                                
              dataType: "jsonp",                 
              success: function (data) {
                  alert("success");
              },
              error: function (errorData) {                 
                alert("fail");
              }// When Service call fails
          });

我可以看到WebAPI正常工作并成功返回数据。但在客户端,我总是得到“失败”警报。我可以在firebug中看到数据。

任何人都可以告诉我为什么当响应状态为'200'时会调用'错误'功能?

2 个答案:

答案 0 :(得分:1)

如果下载的数据不是有效的json数据且可以正确解析,则$ .ajax调用可能会失败。

更改错误回调并检查错误消息:

error: function (data, msg) {                 
            console.log(msg)
          }

答案 1 :(得分:1)

返回的代码不是JSONP。这是简单的JSON。

在jsonp中,服务器必须将JSON对象作为函数的参数返回,并将名称作为回调参数提供。

在您的配置中,如果发送到服务器的回调参数是“example”,则服务器必须回答

example( json code here )

而不仅仅是

json code here

就像现在一样。

使用$.ajax函数,您不必在客户端指定回调函数名称,但服务器必须尊重它。