jQuery,ajax和jsonp的问题
我正在使用jsonp和ajax访问另一台服务器上的Web服务。 这里是jQuery:
$.ajax({
type: 'GET',
url: wsurl + 'callback=?',
dataType: 'jsonp',
crossDomain: true,
error: function(data) {
console.log('error', data);
},
success: function(data) {
console.log('success', data);
},
complete: function() {
console.log('done');
}
});
问题是调用错误回调。 它给了我这个非常有用的信息:
{
readyState: 4,
status: 200,
statusText: "success"
}
这是我打电话给的json文件:
{
"id": 0,
"room_number": "0",
"first_name": "Admin",
"last_name": "Istrator",
"password": "",
"salutation": "Mr.",
"telephone": "",
"email": "",
"description": "admin",
"checkin_date": 915797106000,
"checkout_date": 4071557106000,
"last_login_date": 947333106000,
"active_status": true,
"created_date": 915797106000,
"created_by": 0,
"reference_id": ""
}
我首先尝试使用getJSON jQuery方法,结果相同。 以为我会尝试基本的ajax方法,因为它有更多的控制权,但正如你所看到的,没有运气。 那么,注意我做错了什么? 有任何想法为什么它抛出一个错误,并给我一个statusText属性的成功价值?
编辑
好吧,我给ajax调用添加了一些选项,并从url中删除了回调参数。 这是新的ajax调用:
$.ajax({
type: 'GET',
url: wsurl,
dataType: 'jsonp',
crossDomain: true,
error: function(xhr, textStatus, errorThrown) {
console.log('textStatus: ' + textStatus);
},
success: function(data) {
console.log('success');
console.log(data);
}
});
我收到了一个新的错误,这个错误是我想的,但仍然不起作用。 不同之处在于textStatus现在是“parsererror”。 控制台也在json文件的第一行中引发语法错误:
Uncaught SyntaxError: Unexpected token :
想法?
好吧,有几件事情在我身上跳出来:
$.ajax({
type: 'GET',
#You do not need to append the callback as you have jsonp configured it will do it
#automatically append the callback=<auto generated name>
url: wsurl,
dataType: 'jsonp',
crossDomain: true,
error: function(data) {
console.log('error', data);
},
success: function(data) {
console.log('success', data);
},
complete: function() {
console.log('done');
}
});
此外,您的回报似乎不包含在jsonp工作所需的函数中。
<auto generated name>({ json object })
回调函数将由jquery自动命名。 所以你需要一个服务来获取回调参数并返回一个带有填充的json对象。
不知道这是否是问题,但您的网址不正确。 根据jQuery文档,它应该自动附加?callback =? 为你:
http://api.jquery.com/jQuery.ajax/
从URL中删除回调,并尝试用这样的东西包装你的json(php示例,$ _GET ['callback']是由jQuery自动设置的):
$_GET['callback'] . '({
"id": 0,
"room_number": "0",
"first_name": "Admin",
"last_name": "Istrator",
"password": "",
"salutation": "Mr.",
"telephone": "",
"email": "",
"description": "admin",
"checkin_date": 915797106000,
"checkout_date": 4071557106000,
"last_login_date": 947333106000,
"active_status": true,
"created_date": 915797106000,
"created_by": 0,
"reference_id": ""
})'
链接地址: http://www.djcxy.com/p/47545.html