Jquery JSONP请求获得200个数据响应,但标记错误

时间:2011-06-28 14:41:03

标签: javascript jquery jsonp

有一个简单的自动完成框(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脚本片段,其中还包含正确的JSON。然而,它始终击中错误功能而不是成功的。

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

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"}]

1 个答案:

答案 0 :(得分:5)

JSON不正确,

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

需要

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

JSON需要双引号。

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

  

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

Take From:http://www.json.org/