于是打开超级简陋的 IE 调试工具,使用“网络”->“开始捕获”的工具抓取 ajax 请求头,得到 200 的响应头,但是在 jquery 的 ajax 中却是由 error 处理的,200 的结果怎么会跑到 error 去处理呢?
于是,在 error 中加入各种调试输出:
1
2
3
4
5
6
7
8
|
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest);
console.log( 'readyState: ' + XMLHttpRequest.readyState);
console.log( 'status: ' + XMLHttpRequest.status);
console.log(textStatus);
console.log(errorThrown);
alert( '未提交成功!' );
}, |
结果如下:
1
2
3
4
5
|
日志: [object Object] 日志: readyState: 0 日志: status: 0 日志: error 日志: Error: 由于出现错误 c00ce56e 而导致此项操作无法完成。 |
于是搜索“由于出现错误 c00ce56e 而导致此项操作无法完成。”。
原来是返回的编码与客户端编码不一致,我确定我的浏览器一直是在 uft-8 编码下的,而服务器返回的数据也加了编码设置。
于是再次查看我是不是漏掉那一条小横杠了,结果是多了一个空格:
1
|
header( 'Content-Type: text/plain; charset= utf-8' );
|
改成:
1
|
header( "content-type:text/plain; charset=UTF-8" );
|
就正常了。