我正在尝试.ajax来点击一个返回对象列表的URL,我在春天使用jacksonJsonView它在浏览器中返回json。但是,当我尝试这个代码时,它永远不会成功,但错误警报显示textstatus是'parseerror'。警报看起来像这样:'status = parsererror,error = jQuery15109695890768120119_1357924928198未被称为'
$(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会返回以下内容:
[
{
"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
中答案 0 :(得分:2)
你应该改变
dataType: 'jsonp',
简单
dataType: 'json',
或者,如果你真的需要JSONP并且不能使用JSON - 你应该从服务器端的请求获取回调参数并包装响应如下:
请求[“回调”] +“(”+ string_with_json_response +“)”;
所以,在结果中你会得到类似的东西:
jQuery15109695890768120119_1357924928198('{"response":"val"}');