1

シナリオ: json_encoded 配列にデータを出力する php スクリプトと、AJAX 経由で php スクリプトを呼び出して結果を処理する javascript を含むインデックス html ページがあります。

問題: 200 応答コードを受け取り、responseText が json_encoded 配列であるにもかかわらず、AJAX 呼び出しが.fail代わりに実行されます。.done

これに苦労した後、炎や不当な反対票ではなく、助けを求めています。私はこれを調査しましたが、同様の質問は問題を解決していません。

getDomains.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