使用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 就获取为空了;
求大神指教
在服务端你并不能从参数中获取到 POST 的数据,在java中你并不能通过 request.getParameter来获得size的内容,你只能从流里面读取出来,然后在自行解析,代码片段如下:
BufferedReader br = request.getReader();
String s = null;
while((s = br.readLine()) != null) {
System.out.println(s);
}
前端能做的只有这些了吧;发送的数据时要
xdr.send('json:"{msg_type:S,page_index:1,size:10}" ');'
还是
xdr.send('json="{msg_type:S,page_index:1,size:10}" ');
@_只影向谁去: xdr.send('json="{msg_type:S,page_index:1,size:10}" ');
后面那个 var postData = encodeURI(JSON.stringify(data)); 处理下
但应该还是会有问题,后台应该是要改的
@codingHeart: 多谢解答;
('json="{msg_type:S,page_index:1,size:10}" ');括号内的本身就是字符串了;
还需要用JSON.stringify转换一下吗?
@_只影向谁去: 这儿是没多大问题,可以不用吧