ajax跨域jsonp及jquery中的調用問題

最近在工做中碰到跨域調用的問題。當用jquery的$.ajax調用另外一個域名服務器程序時在firefox下面能獲取到返回值,可是返回值不被認爲是一個正確的json格式。而在IE下面,直接會致使JS腳本錯。

糾其緣由,是由於使用了ajax的跨域。這種狀況下須要使用jsonp。雖然之前也使用過jsonp,這裏給本身作個總結,也給碰到問題的人提供幫助。

使用jsonp須要作的修改:

1.客戶端調用時須要在URL後面增長jsonp=callbackFunction,並定義好會調的callbackFunction
  如:http://www.xxxx.xxx?jsonp=jsonCallback

     < script >
    function jsonCallback(result){
        
    }
     < script >

2.服務器端,若是服務器端原來須要返回的json格式以下:
{"message":"投票不存在","result":"","code":"400","header":null}
則返回的數據將會是函數類型的數據:
jsonCallback({"message":"投票不存在","result":"","code":"400","header":null})

在jquery中使用jsonp

$.getJSON
     < script >
     $.getJSON("http://www.xxxx.xxx&jsoncallback=?",
    function(data){

    });
     </script>

$.ajax

        $.ajax({             type: "GET",             url: 'http://www.xxxx.xxx/api/topic-show!byId?',             data: "jsonCallback=?&topicId=" + topicId ,             dataType: "json",             success: function (msg) {             }         });
相關文章
相關標籤/搜索