最近在工做中碰到跨域调用的问题。当用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) { } });