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"}'); |