首页 新闻 会员 周边

IE8下使用XdomainRequest对象跨域问题;后台接收不到参数

0
悬赏园豆:100 [已解决问题] 解决于 2017-08-02 17:26

使用jQuery(1.9)发送ajax请求,发现IE8 IE9不支持xhr;支持xdr(XDomainRequest)

使用xdrf前端发送的代码是这样的

var xdr = new XDomainRequest();
xdr.timeout = 10000;
xdr.open("post", api.get_msg_idx);

setTimeout(function () {
  xdr.send('json:"{msg_type:S,page_index:1,size:10}" ');
}, 0);
xdr.onload = function(c) {
  alert("X");
  console.log(xdr.responseText);
};

发送的请求头中IE8设置了content-type:text/plain

后台接收的参数为空,但前端已经显示发送参数了;;

后台使用的是java,接收IE10 IE11 的参数都能获取到,但是IE8 IE9 就获取为空了;

求大神指教

_只影向谁去的主页 _只影向谁去 | 初学一级 | 园豆:51
提问于:2017-08-01 14:46
< >
分享
最佳答案
1

在服务端你并不能从参数中获取到 POST 的数据,在java中你并不能通过 request.getParameter来获得size的内容,你只能从流里面读取出来,然后在自行解析,代码片段如下:

BufferedReader br = request.getReader();
String s = null;
while((s = br.readLine()) != null) {
    System.out.println(s);
}

收获园豆:100
codingHeart | 小虾三级 |园豆:1511 | 2017-08-01 15:03

前端能做的只有这些了吧;发送的数据时要

xdr.send('json:"{msg_type:S,page_index:1,size:10}" ');'

还是

xdr.send('json="{msg_type:S,page_index:1,size:10}" ');

_只影向谁去 | 园豆:51 (初学一级) | 2017-08-01 15:08

@_只影向谁去: xdr.send('json="{msg_type:S,page_index:1,size:10}" ');

后面那个  var postData = encodeURI(JSON.stringify(data)); 处理下

 但应该还是会有问题,后台应该是要改的 

codingHeart | 园豆:1511 (小虾三级) | 2017-08-01 15:12

@codingHeart: 多谢解答;

('json="{msg_type:S,page_index:1,size:10}" ');括号内的本身就是字符串了;

还需要用JSON.stringify转换一下吗?

_只影向谁去 | 园豆:51 (初学一级) | 2017-08-01 15:51

@_只影向谁去: 这儿是没多大问题,可以不用吧

codingHeart | 园豆:1511 (小虾三级) | 2017-08-01 15:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册