ajax跨域请求json数据(jsonp)
2016-04-08 16:50:00
1147533288
原创
1107
跨域js请求采用GET方式,貌似不能使用POST方式。
[code lang="javascript"]
$.ajax
({
type: "GET",
dataType:"jsonp",
jsonp:"jsonpcallback",
url:"http://10.20.17.248:8081/dts/Anonymous/getItem?cardid="+123123123123+"&itemname="+encodeURIComponent("头颅正侧位"),
data: {},
success: function (data)
{
alert($.toJSONString(data));
},
timeout: 30000,
error: function (XMLHttpRequest, textStatus, errorThrown) {
debugger;
alert(errorThrown);
}
});
[/code]
java部分controller处理逻辑:
[code lang="java"]
response.addHeader("Access-Control-Allow-Origin", "*");
String cardid = request.getParameter("cardid");
String itemname = request.getParameter("itemname");
JSONObject json = anonyService.getItem(cardid,itemname);
PrintWriter out = null;
try {
out = response.getWriter();
String jsonpCallback = request.getParameter("jsonpcallback");//客户端请求参数
out.write(jsonpCallback+"("+json.toString()+")");
} catch (IOException e) {
e.printStackTrace();
logger.error("Anonymous/getItem "+e.getMessage());
}
out.flush();
out.close();
[/code]
另外:
jQuery.support.cors = true;可以尝试使用该设置进行跨域请求。
原本使用该设置联调通过,后发现无论如何都是拒绝访问返回error部分代码,无奈百度后采用jsonp方式进行跨域请求操作。