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

时间:2012-01-13 17:03:31

标签: javascript jquery ajax internet-explorer mime-types

在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之后获取此数据?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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