在使用jsonp时遇到的问题

今天在使用ajax发送请求的时候遇到了一点问题,就是跨域。显然这就是需要用到JSONP了。
使用的是Jquery来完成的AJAX请求

$.getJSON('url?jsoncallback=?', {        
categoryId: "1",    
}, function (data) {});

js大致就是这个样子。
主要的是后台传输数据的格式变化。
比较一下 ajax返回jsonjsonp的格式:

{"message":"success", "code":"200","result":{"name":"test","id":1,"description":"11"}}

jsonp返回的格式:

callback({"message":"success", "code":"200","result":{"name":"test","id":1,"description":"11"}})

urlcallback传到后台的参数是什么,callback就是什么, jsonpjson外面有多了一层callback()
既然返回的数据结构有区别,那么后台的提供服务的方法也是要发生变化的。我使用的方法就是在HttpServletResponse中进行操作。

String value = callback + "(" + JSON.toJSONString(result) + ")";
HttpServletResponse.getOutputStream().write(value.getBytes("UTF-8"));

直接写到response中,然后前台正常操作。
关于json和jsonp之间的关系与区别 这篇文章讲的很不错。

你可能感兴趣的:(在使用jsonp时遇到的问题)