当前位置:文档之家› 解决js跨域问题

解决js跨域问题

JSONP(JSON With Padding),就是打包在函数调用中的的JSON(或者包裹的JSON)。

AJAX和JSONP在jQuery中的调用方式看起来极为相像,千万不要被这种现象迷惑,它们本质上有很大不同。

AJAX是通过XMLHttpRequest对象获取非页面内容,而JSONP是动态的添加<script>标签来调用服务器脚本。

虽然jQuery把JSONP作为AJAX的一种形式进行了封装,但JSONP并不是AJAX的一种形式或一种特例。

首先在ajax中把dataType改为jsonp,这是一种文本格式,最后会将结果改为callback(json)的格式。

Url最后加callback=?
在服务器端,response的时候,获取url中callback的值,然后字符串拼接加在json的前面。

如果没有加callback的值,在页面报错,走errer,textStatus是“parsererror”,因为jsonp 和json不一样的原因。

具体代码:
服务器:String back=request.getParameter("jsoncallback");
out.print(back+"("+json+")");//out.print(json);
页面:
$.ajax({
url :
"http://192.168.141.120:8080/BookStore/login?username=1111&jsoncallba ck=?",
dataType : "jsonp",
type : "GET",
success : function(data){
if(data){
alert("aa");
}
},
error: function(msg) {
alert(msg);
}
});。

相关主题