【问题标题】:Jquery JSONP request gets 200 response with data but flags errorJquery JSONP 请求获得 200 响应数据但标记错误
【发布时间】:2011-09-24 09:29:24
【问题描述】:

有一个简单的自动完成框 (jquery ui),它从 Web 服务获取其源代码。代码如下:

var autocompleteOptions = {
    source = getDataFromService,
    minLength: 3
};

var getDataFromService = function(request, response) {
    var ajaxOptions = {
        url: "http://myservice:1234/somedata/",
        dataType: "jsonp",
        data: "someVariable = " + request.term,
        success: function(data) { alert("data"); },
        error: function(xhr, description, error) { alert("failed"); }
    };

    $.ajax(ajaxOptions);
}

$(someSelector).autocomplete(autocompleteOptions);

查看 fiddler 甚至在 Firefox firebug 面板中,我可以看到正确返回 JSON,服务器响应是 200。我什至检查了创建的 jsonp 脚本 sn-p,其中也包含正确的 JSON .然而它总是命中错误函数而不是成功函数。

我也尝试过使用 complete 并手动从 xhr 获取数据,但是 responseText 和 responseXml 都未定义。包含的错误说解析错误,但它似乎在语法上都是正确的 json,因为萤火虫面板和提琴手都显示它很好。

HTTP/1.1 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: 28 Jun 2011 11:17:04 GMT
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 29
Connection: Close

[{"id":"1", "somevar":"hello"}]

【问题讨论】:

  • 你能发布有问题的 JSON 吗?如果你得到一个“解析错误”,一定是有原因的......
  • 如果有帮助,会将原始输出添加到我的原始帖子中
  • AJAX 调用完成时,您在警报框中看到了什么?还是没有提醒?
  • 只是说“错误”,虽然我确信有一次我看到了一些关于“解析错误”的东西,但由于 JSON 有效并且响应很好,因此不清楚实际问题是什么...

标签: javascript jquery jsonp


【解决方案1】:

那个 JSON 不正确,

[{"id":"1", somevar:"hello"}]

需要

[{"id":"1", "somevar":"hello"}]

JSON 需要双引号。

http://jsfiddle.net/robert/Y6ypV/

值可以是双引号中的字符串、数字、true 或 false 或 null,也可以是对象或数组。这些结构可以嵌套。

取自:http://www.json.org/

【讨论】:

  • 抱歉错字,只是从其他机器复制打字,它确实正确包含另一台机器上数据周围的引号。会更新我的帖子。
  • 我不知道有 jsonlint,我在构建管道中使用 jslint...现在将检查那里的 json...EDIT 有效 json跨度>
  • 结束了,因为我们使用的是 JsonP,所以我们必须修改提供信息的服务,以将返回的数据包装在回调中。由于该服务不支持 JsonP(而且似乎没有任何地方告诉您需要服务器支持它)它无法完成请求。
猜你喜欢
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多