IE AJAX响应在Null(0x00)字符后修剪所有数据



在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之后获得此数据而不更改响应?

我不确定这是否真的有帮助,但请尝试将传递给.ajax()的选项中的dataType字段设置为"text"

如果这还不能解决问题,请查看传递给.ajax()的dataFilter选项。它允许您指定一个回调函数来处理原始响应。

IE浏览器喜欢在NULL字符处终止字符串。解决方案是将空字符替换为空格。不幸的是,这似乎是唯一的解决方案,并不完全符合所提出的问题。

最新更新