场景:我有一个 php 脚本,它以 json_encoded 数组输出数据,以及一个带有 javascript 的索引 html 页面,它通过 AJAX 调用 php 脚本并处理结果。
问题:AJAX 调用.fail
而不是.done
即使它获得 200 响应代码并且 responseText 是 json_encoded 数组。
在为此苦苦挣扎之后,我正在向您寻求帮助,而不是火焰和无端的否决;我对此进行了研究,但类似的问题并没有解决问题。
获取域.php:
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
$domains = array();
$domains[] = array('domainID' => 1, 'domainName' => 'alpha.com');
$domains[] = array('domainID' => 2, 'domainName' => 'beta.com');
echo json_encode($domains);
?>
浏览器中的 getDomains.php 输出:
[{"domainID":"1","domainName":"alpha.com"},{"domainID":"2","domainName":"beta.com"}]
index.html/ajax.js:
<script>
// Ajax execute
var go = $.ajax({
url: 'getDomains.php',
type: 'POST',
dataType: 'json'
})
.done(function(results) {
console.debug('callAPI done');
console.debug(results);
})
.fail(function(msg) {
console.debug('callAPI fail');
console.debug(msg);
})
.always(function() {
});
</script>
当我访问 index.html 时,我callAPI fail
在 console.log 中看到了消息。
callAPI fail
Object { ...
responseText: "[{"domainID":"1","domainName":"alpha.com"},{"domainID":"2","domainName":"beta.com"}]"
status: 200
statusText: "OK"