ajax跨域jsonp及jquery中的调用问题
最近在工作中碰到跨域调用的问题。当用jquery的$.ajax调用另一个域名服务器程序时在firefox下面能获取到返回值,但是返回值不被认为是一个正确的json格式。而在IE下面,直接会导致JS脚本错。
纠其原因,是因为使用了ajax的跨域。这种情况下需要使用jsonp。虽然以前也使用过jsonp,这里给自己做个总结,也给碰到问题的人提供帮助。
使用jsonp需要做的修改:
1.客户端调用时需要在URL后面增加jsonp=callbackFunction,并定义好会调的callbackFunction
如:http://www.xxxx.xxx?jsonp=jsonCallback
2.服务器端,如果服务器端原来需要返回的json格式如下:
则返回的数据将会是函数类型的数据:
在jquery中使用jsonp
$.getJSON
$.ajax
纠其原因,是因为使用了ajax的跨域。这种情况下需要使用jsonp。虽然以前也使用过jsonp,这里给自己做个总结,也给碰到问题的人提供帮助。
使用jsonp需要做的修改:
1.客户端调用时需要在URL后面增加jsonp=callbackFunction,并定义好会调的callbackFunction
如:http://www.xxxx.xxx?jsonp=jsonCallback
<
script
>
function jsonCallback(result){
}
< 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>
$.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) {
}
});
type: "GET",
url: 'http://www.xxxx.xxx/api/topic-show!byId?',
data: "jsonCallback=?&topicId=" + topicId ,
dataType: "json",
success: function (msg) {
}
});
转载于:https://blog.51cto.com/mmqzlj/471484