簡體   English   中英

跨域jQuery Ajax調用-語法丟失錯誤

[英]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文本(並且不能執行,因為不是)。

要么:

  1. 從對象中刪除dataType屬性,以便jQuery將使用HTTP Content-Type來確定它是JSON 添加訪問控制標頭以允許您的站點訪問其他域
  2. 返回JSON-P而不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM