最近在工做中碰到跨域調用的問題。當用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) { } });