在下面的主PHP文件中有一个JSON数组。如您所见,$firstname_error$lastname_error是我打算传递给AJAX的变量,以使其在两个单独的div中显示。此刻什么都没有出现,也不确定为什么。非常感谢任何见解。

PHP和JSON

if (empty($_POST["City"])) {
    $city_error = "A city required";
}

if (empty($_POST["E-mail"])) {
    $email_error = "E-mail is required";
}

echo json_encode(array("city" => $city_error, "email" => $email_error));


AJAX

$(document).ready(function () {
    $(".form").submit(function (e) {
        e.preventDefault();

        $.ajax({
            type: "POST",
            url: "destination.php",
            data: $(this).serialize(),
            dataType: 'json',
            cache: false,
            success: function (data) {
                if (data.trim() != '') {
                    $('.error4').html(data.city);
                    $('.error5').html(data.email);
                }
            },
            error: function () {

            }
        });
    });
});


.error4.error5当前不显示任何内容。

最佳答案

由于您具有dataType: 'json',,传递给success函数的数据变量将成为对象,因此您无法使用trim()

要检查响应中是否存在该值,可以在data上使用hasOwnProperty

success: function (data) {

    $('.error4').text(data.hasOwnProperty('city') ? data.city : '');
    $('.error5').text(data.hasOwnProperty('email') ? data.email : '');
},


希望这可以帮助!

09-11 00:49