jQuery解析器错误ajax调用

jQuery parser error ajax call

我正在尝试.ajax来点击一个返回对象列表的URL,我在春天使用jacksonJsonView它在浏览器中返回json。 但是,当我尝试这个代码时,它永远不会成功,但错误警报显示textstatus是'parseerror'。 警报看起来像这样:'status = parsererror,error = jQuery15109695890768120119_1357924928198未被调用'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(function() {  
$("#tags").autocomplete({
source: function( request, response ) {
    $.ajax({
        url: 'http://localhost:8181/jquery/api/states/regex?stateName='+request.term,
        method: 'GET',
        dataType: 'jsonp',
        success: function(json) {
        alert("test");

        },
        error: function(httpRequest, textStatus, errorThrown) {
        alert("status=" + textStatus +",error=" + errorThrown);
        }
    });
}
})

API返回一些这样的东西:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[

    {
       "id": 12,
       "stateName":"Vermont",
       "intPtLon": -72.673354,
       "intPtLat": 44.0605475,
       "stUsps":"VT"
    },
    {
       "id": 20,
       "stateName":"Virginia",
       "intPtLon": -78.6681938,
       "intPtLat": 37.5222512,
       "stUsps":"VA"
    }

]

添加以下行修复了问题,它在IE中的工作正常,而不是在Firefox中


你应该改变

1
dataType: 'jsonp',

简单

1
dataType: 'json',

或者,如果你真的需要JSONP并且不能使用JSON - 你应该从服务器端的请求获取回调参数并包装响应,如下所示:

请求["callback"] +"("+ string_with_json_response +")";

所以,在结果中你会得到类似的东西:

1
jQuery15109695890768120119_1357924928198('{"response":"val"}');