0

私のAJAX呼び出しは実行され、私が望むものも返しますが、.done内ではありません.failで失敗し、結果は.alwaysで機能します

 $(document).ready(function() {
        $("#submit").click(function(){

            var formData = $("#callAjaxForm").serialize();

            $.ajax({
                type: "POST",
                url: "JSON_MDB_UPDATE.php",
                data: formData
            })
            .done(function(data) {
                alert( "Done: " + data );
                data = $.trim(data);
                $("#notification").text(data.responseText);
            })
            .fail(function(data) {
                alert("Failed: " + data);
                console.log(data);
            })
            .always(function(data) { 
                $("#notification").text(data.responseText);
            });

            return false;
        });
    });

ここに私のコンソールの結果があります:

console.log

私のPHPは単純なエコーの例です:

<?php

header('content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");


$firstName = $_POST[firstName];
$lastName = $_POST[lastName];

echo("My First Name: " . $firstName . " Last Name: " . $lastName);
?>
4

1 に答える 1

4

header('content-type: application/json; charset=utf-8');

これは、JSON を出力していることを示しているため、jQuery はそれを JSON として解析しようとし、解析できない場合はエラー状態になります。

echo("My First Name: " . $firstName . " Last Name: " . $lastName);

これはJSONではありません

代わりに JSON を出力します。

echo json_encode(Array("My First Name" => $firstName, "Last Name" => $lastName));

または、構造化データが必要ない場合: JSON を送信しているとは言わないでください:

header('content-type: text/plain; charset=utf-8');
于 2013-10-10T20:32:43.173 に答える