1. 程式人生 > >百度地圖座標轉換Web服務跨域請求

百度地圖座標轉換Web服務跨域請求

使用

$.ajax({
       type : "get",
       async:false,
       url : reqUrl,
       dataType : "jsonp",
       jsonp: "callbackparam",                    
       jsonpCallback:"success_jsonpCallback",     
       success: function(json){
  console.log("success"); 
console.log(json);
   },
   error: function() {
                 alert("失敗");
              }
     });

或者

$.getJSON(reqUrl,function(json){

           console.log("success"); 
           console.log(json);

});

即jsonp,進行跨域請求時,由於伺服器返回的資料是callback{json資料}這種格式,即jsonp格式,瀏覽器會報 unexpected token 錯誤,解決方法如下:

(1)在伺服器端多返回的資料進行處理,改成jsonp格式

(2)在reUrl中,新增引數callback=? 即 reqUrl=reqUrl+"&callback=?";

對於(1)伺服器端絕大多數時候是無法控制的,所以更常見的方法是(2)。

對於(2)解釋如下,引言,http://www.zhihu.com/question/24013110/answer/27693431:

jquery會自動檢測callback引數是否存在並替換為一個回撥函式名,服務端需要輸出“這個函式名(資料)”這樣的js程式碼,瀏覽器得到後,執行js,就呼叫jquery建立的函式並將資料傳給jquery了