1.ajax跨域请求
$.ajax({
async:false,
type: 'GET',
url: 'http://www.mysite.com/demo.do', // 跨域URL
dataType: 'jsonp',
jsonp: 'jsoncallback', //默认callback
data: mydata,
timeout: 5000,
success: function (json) { //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数
if(json.actionErrors.length!=0){
alert(json.actionErrors);
}
},
error: function(xhr){
//jsonp 方式此方法不被触发
//请求出错处理
alert("请求出错(请检查相关度网络状况.)");
}
});
2.getJSON跨域请求
$.getJSON("http://e.hnce.com.cn/tools/ajax.aspx?jsoncallback=?",
{ id: 0, action: 'jobcategoryjson' },
function(json) {
alert(json[0].pid);
alert(json[0].items[0]._name);
});
3.服务器后台:
@RequestMapping(value = "/getDataById") public String getDataById(@RequestParam("id") String id,HttpServletRequest request, HttpServletResponse response) throws IOException { String callback = request.getParameter("jsoncallback"); String json = .....业务逻辑.....; response.setContentType("text/html"); response.setCharacterEncoding("utf-8");
response.getWriter().write(callback + "(" + json + ")");
return null; }
4.数据格式比较
json格式:
{
"message":"获取成功",
"state":"1",
"result":{"name":"工作组1","id":1,"description":"11"}
}
jsonp格式:
callback({
"message":"获取成功",
"state":"1",
"result":{"name":"工作组1","id":1,"description":"11"}
})