【问题标题】:IE AJAX Responses Trim All Data After Null (0x00) CharactersIE AJAX 响应修剪空 (0x00) 字符后的所有数据
【发布时间】:2012-01-13 17:03:30
【问题描述】:

在 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之后的数据而不改变响应?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我已经尝试了所有记录的数据类型。 dataFilter 函数还在第一个 0x00 处终止字符串。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-07-14
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 2021-01-20
      相关资源
      最近更新 更多