js跨域,jquery ajax跨域解决;解决parsererror问题 实测

闲来无事,想起跨域问题。

框架是struts +spring ,前端是 jquery

后台代码如下 

     HttpServletRequest request = ServletActionContext.getRequest();
     HttpServletResponse response = ServletActionContext.getResponse();
    String callback = request.getParameter("callback");
    String jsonpcallback = request.getParameter("callback");

    jsonpcallback = jsonpcallback == null ? "" : jsonpcallback;

    String bln = "1";

    String taskid = "1";

    String json = jsonpcallback+ "({ returnFlag:"+bln+",taskid:"+taskid+"});";

    setInputStream(new ByteArrayInputStream(json.getBytes("UTF-8")));

    return SUCCESS;

前端js代码如下

$.ajax({
url : "http://localhost:8089/xx/xx/xx.action?callback=?",     //(本地用8080,8089则是跨域了)
type:'GET',
dataType : "jsonp",
data:"{}", //不需要传数据时 ,也要写
jsonp: "callback",
jsonpCallback: "jsonpcallback",
success : function(resp){
alert(resp.returnFlag);
},
error : function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}

});

需要注意的是

     1:js中 ajax的url中callback 传的是什么,后台的jsonpcallback 就是什么,如果callback=? ,此时,后台获取到的callback是null,则jsonpcallback =“”(空字符串)

     2:json与jsonp 格式对比

       

            json格式:     
                        { returnFlag:1,taskid:1}
          jsonp格式:
            ({ returnFlag:1,taskid:1});   
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值