AJAX jQuery 使用 IE8 成功,使用 IE10/Chrome/FF 失败
AJAX jQuery success with IE8, fails with IE10/Chrome/FF
我在使用 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: unexpected character at line 1 column 1 of the JSON data
第一个字符是大括号。这是我得到的 JSON 的示例:
{
"typeDossier": [
{
"type": "MED",
"famille": "AEC",
"codeType": 1,
"session": ""
},
{
"type": "HPS",
"famille": "AEC",
"codeType": 2,
"session": ""
}
],
"aecHps": true,
"CodeAecHps": "1,2,",
"tous": "1,2,"
}
希望你能帮我解决这个奇怪的问题。先感谢您。
此致,
我的问题已解决,是由于我的项目配置文件中出现 BOM 字符引起的。
在这里查看我是如何修复它的:
我在使用 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: unexpected character at line 1 column 1 of the JSON data
第一个字符是大括号。这是我得到的 JSON 的示例:
{
"typeDossier": [
{
"type": "MED",
"famille": "AEC",
"codeType": 1,
"session": ""
},
{
"type": "HPS",
"famille": "AEC",
"codeType": 2,
"session": ""
}
],
"aecHps": true,
"CodeAecHps": "1,2,",
"tous": "1,2,"
}
希望你能帮我解决这个奇怪的问题。先感谢您。 此致,
我的问题已解决,是由于我的项目配置文件中出现 BOM 字符引起的。
在这里查看我是如何修复它的: