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;
        });
    });

这是我的控制台结果:

控制台日志

我的 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 回答