[英]Cross Domain jQuery Ajax call - Syntax missing error
我無法從跨域訪問Web服務調用。 請指教。 我已將源粘貼在這里。
PHP:Web服務響應
$data['response'] = 2;
header('Content-type: application/json');
echo json_encode($data);
jQuery Ajax調用:
$.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)。');'; 而不是回聲json_encode($ data);
創建了函數someCallBackString並進行了我的實現。
您正在告訴jQuery發出JSON-P請求( dataType:'jsonp'
),但是您的服務器正在返回JSON。
因此,瀏覽器試圖像執行JavaScript程序一樣執行JSON文本(並且不能執行,因為不是)。
要么:
dataType
屬性,以便jQuery將使用HTTP Content-Type來確定它是JSON 並添加訪問控制標頭以允許您的站點訪問其他域或 好的,問題出在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 . ');';
現在,您可以檢查控制台並查看數據正在通過
您可以在此處查看更多信息http://remysharp.com/2007/10/08/what-is-jsonp/
將ajax更改為以下代碼:
解
$.ajax({
type: 'GET',
url: cross-domain-url,
data:{ param1:'123', param2:'123' },
dataType:'JSON',
success:function (data) {
alert('success');
},
error:function(){
alert('error');
}
});
希望它能工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.