1

场景:我有一个 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"
4

0 回答 0