【问题标题】:AJAX jQuery success with IE8, fails with IE10/Chrome/FFAJAX jQuery 在 IE8 上成功,在 IE10/Chrome/FF 上失败
【发布时间】:2015-10-22 02:26:23
【问题描述】:

我在使用 jQuery 和 AJAX 时遇到了一个非常奇怪的问题。我的 AJAX 调用使用 IE8 转到 success,但使用 IE10、Chrome 和 Firefox 转到 error

这是 Zend Framework 2 中的 PHP 代码:

$response = $this->getResponse();
$headers = $response->getHeaders();
$headers->clearHeaders()
        ->addHeaderLine('Content-Type', 'application/json; charset=utf-8');
$response->setContent(json_encode($array));
return $response;

$array 是一个 PHP 数组。

这是我的 Javascript 代码:

$.ajax({
    url: "/application/getTypeDossierParPilote/" + idPilote,
    type: "POST",
    async : false,
    success: function(data) {
        LISTE_TYPE_BANDEAU = data;
        ID_PILOTE_SELECTED_BANDEAU = idPilote;
        LISTE_TYPE_BANDEAU_LOADED_BANDEAU = true;                    
    },
    error: function errorHandler(e)             
        ID_PILOTE_SELECTED_BANDEAU = 0;
        LISTE_TYPE_BANDEAU_LOADED_BANDEAU = false;
        LISTE_TYPE_BANDEAU = null;                      
    }                
});

使用IE8时,转到success,数据可用。使用 IE10 时,它转到error。虽然,当我的客户在 IE10 上尝试这个时,他没有遇到任何问题,所以我认为它直接转到 success

我尝试添加类似dataType: "json", 甚至dataType: "html", 的内容来检查JSON 是否正确,在后一种情况下它会转到success,但数据不可用。

当我使用浏览器的开发者模式复制响应正文并检查http://jsonlint.com/ JSON 是否正确时,我收到以下消息:

JSON.parse:JSON 数据的第 1 行第 1 列出现意外字符

第一个字符是大括号。这是我得到的 JSON 示例:

{
    "typeDossier": [
        {
            "type": "MED",
            "famille": "AEC",
            "codeType": 1,
            "session": ""
        },
        {
            "type": "HPS",
            "famille": "AEC",
            "codeType": 2,
            "session": ""
        }
    ],
    "aecHps": true,
    "CodeAecHps": "1,2,",
    "tous": "1,2,"
}

希望您能帮我解决这个奇怪的问题。先感谢您。 问候,

【问题讨论】:

  • 你可以在这里发布 JSON 响应吗?
  • 您的 json 无效,并且 jQuery 的内置 json 解析器错误地告诉您它是有效的。我的假设是您使用的是旧版本的 jQuery,它具有更宽容的内置 json 解析器。现代浏览器使用浏览器提供的,而不是 jQuery 自带的,这就是为什么你所有的现代浏览器都正确地在无效 json 上失败的原因。
  • 感谢您的回复,我使用的是jQuery v1.10.2。我也忘了说非常重要的一点是我的客户可以让它在他的环境中在 IE10 上运行。这是最奇怪的事情。我现在将编辑我的帖子。

标签: jquery ajax internet-explorer-8 internet-explorer-10


【解决方案1】:

我的问题已经修复,是我的项目配置文件中出现的 BOM 字符引起的。

在这里查看我是如何修复它的:Web server response generates UTF-8 (BOM) JSON

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2010-12-31
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多