在Internet Explorer(IE6,IE7和IE8)中,空字符(“0x00”)和之后的任何字符都会被ajax响应(数据)修剪掉。
我有一个如下的AJAX请求循环:
var pages = 10;
var nextnoteid = 0;
for (isub = 1; isub <= pages; isub++)
{
var c = "http://www.site.com/application.exe?id=" + nextnoteid;
$.ajax(
{
url: c,
cache: false,
async: false,
success: function(data)
{
var start = data.indexOf("NEXTNOTEID") + 10;
// save the id of the next note to retrieve
nextnoteid = data.substring(start, start + 16).trim();
data = data.substring(0, start - 10);
// append note to DOM
$("#printarea").append("<pre class='pxprintpage'>" + data + "</pre>");
}
});
}
响应以下列格式返回(_表示0x00字符):
Note Title Note Author ... simple text note ... __________NEXTNOTEID__________9827482998274829__________
如何在不改变响应的情况下在IE6,IE7和IE8中的0x00之后获取此数据?
答案 0 :(得分:0)
我不确定这是否真的有用,但请尝试将传递给.ajax()的选项中的dataType
字段设置为"text"
。
如果这不能解决问题,请查看传递给.ajax()的dataFilter
选项。它允许您指定回调函数来处理原始响应。
答案 1 :(得分:0)
IE浏览器喜欢以NULL字符终止字符串。解决方案是用空格替换空字符。不幸的是,这似乎是唯一的解决方案,并不完全适合所提出的问题。