我无法从跨域访问webservice调用。请指教。我在这里粘贴了我的来源。
PHP:webservice响应
$data['response'] = 2;
header('Content-type: application/json');
echo json_encode($data);
jQuery Ajax Call:
$.ajax({
type: 'GET',
url: cross-domain-url,
data:{ param1:'123', param2:'123' },
dataType:'jsonp',
crossDomain: 'true',
async: true,
success:function (data) {
alert('success');
},
error:function(){
alert('error');
}
});
跨域URL响应:
{"ResultCode":2}
我总是只收到错误。我不知道为什么。我可以在Firefox检查区看到以下消息。
SyntaxError: missing ; before statement
{"ResultCode":2}
请帮帮我。
解决方案:
修改线条, echo'someCallBackString('。json_encode($ data)。');'; 而不是echo json_encode($ data);
创建了someCallBackString函数并继续我的实现。
答案 0 :(得分:0)
您告诉jQuery发出JSON-P请求(dataType:'jsonp'
),但您的服务器正在返回JSON。
因此,浏览器正在尝试执行JSON文本,就像它是一个JavaScript程序一样(并且它不能,因为它不是)。
或者:
dataType
属性,以便jQuery将使用HTTP Content-Type确定它是JSON 并添加access control headers以允许您的网站访问其他域或 答案 1 :(得分:0)
好的问题出在JSONP数据中,当您发送请求时,JSON响应会发送响应
callbackFunctionName(jsonData)
您没有这样的内容,因此您需要格式化代码,如下所示
$(document).ready(function() {
$.ajax({
type: 'GET',
url: 'your cross domain file',
dataType:'jsonp',
crossDomain: 'true',
jsonpCallback: 'MyCallback',
async: true,
success:function (data) {
console.log(data);
},
error:function(data){
console.log('error');
}
});
function MyCallback(data) {
}
});
现在在响应中,数据需要格式化为
$data['response'] = 2;
header('Content-type: application/json');
$json_data = json_encode($data);
echo "MyCallback" . '(' . $json_data . ');';
您现在可以检查您的控制台并查看数据是否正在通过
查看更多相关信息答案 2 :(得分:-1)
将您的ajax更改为此代码:
<强>解决方案强>
$.ajax({
type: 'GET',
url: cross-domain-url,
data:{ param1:'123', param2:'123' },
dataType:'JSON',
success:function (data) {
alert('success');
},
error:function(){
alert('error');
}
});
希望它能奏效....