您的位置:首页 > Web前端 > JavaScript

JSON跨域请求

2013-10-25 17:50 295 查看
【服务器端】

一、SpringMVC:

@RequestMapping(value = "/waitReceiveCouponCount")
@ResponseBody
public String waitReceiveCouponCount(String sn, String callback) {
int count = couponService.findWaitReceiveList(memberService.findBySn(sn)).size();
return callback + "("+count+")";
}【客户端】
第一种:

$.getJSON("http://www.xx.com/xx/member/waitReceiveCouponCount.jhtml?sn=123456&callback=?", function(data) {
alert(data);
})第二种:
$.ajax({
type : "get",
url : "http://www.xx.com/xx/member/waitReceiveCouponCount.jhtml?sn=123456",
dataType : "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
success : function(json){
alert(json);
}
});


--------------------------------------------------------------已过时------------------------------------------------------------
二.Struts2 实现方式

<action name="*" class="accessAction" method="{1}">
<result name="queryMenu" type="json">
<param name="root">accessVO.menuList</param>
<param name="callbackParameter">callback</param>
</result>
</action>


三.Servlet方式

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String jsonData = getDataAsJson(req.getParameter("symbol"));
String output = req.getParameter("callback") + "(" + jsonData + ");";
resp.setContentType("text/javascript");
PrintWriter out = resp.getWriter();
out.println(output);
// prints: jsonp1232617941775({"symbol" : "IBM", "price" : "91.42"});
}


【客户端】

<script>
//1.$.ajax({});
$.ajax({
url: "http://ming.skymis.com/access/queryMenu",
dataType: 'jsonp',
jsonp:'callback',     //测试时,dataType必须加上,jsonp可加可不加。不过最好还是加上
success: function(data) {
alert(data[0].name);
}
});
//2.$.getJSON({});
jQuery.getJSON("http://ming.skymis.com/access/queryMenu?callback=?", function(data) {
alert(data[0].name);
});
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsonp