ajax跨域-jsonp

jsonp仅支持get请求

$.ajax({
   type: "GET",
   async: false,
   url: "http://localhost:8888/crbcHQimis/specialplanmanage/d7194c5a32ca43fc94684579ab42d3d6",
   dataType: "jsonp",
   jsonp: "callback",
   jsonpCallback:"successCallback",
   success: function (result) {
      alert(result);
   },
   error: function (e) {
      alert(e)
   }
});

以上请求成功,但是不会进入到success回调函数里,而是进入error中。

最后修改后台方法,解决:

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String getInfoById(@PathVariable String id) {
   return "successCallback('"+id+"')";
}

不过根据浏览器的保护规则,跨域的时候我们创建的sessionId是不会被浏览器保存下来的,这样,当我们在进行跨域访问的时候,我们的sessionId就不会被保存下来,也就是说,每一次的请求,服务器就会以为是一个新的人,而不是同一个人,为了解决这样的办法,需要在ajax请求时增加 xhrFields:{withCredentials:true},如下:

$.ajax({
   type: "GET",
   async: false,
   url: "http://localhost:8888/crbcHQimis/specialplanmanage/d7194c5a32ca43fc94684579ab42d3d6",
   dataType: "jsonp",
   jsonp: "callback",
   jsonpCallback:"successCallback",
   xhrFields:{withCredentials:true},
   success: function (result) {
      alert(result);
   },
   error: function (e) {
      alert(e)
   }
});

猜你喜欢

转载自my.oschina.net/u/2351011/blog/2875702