AJAX响应返回“成功”但无法正确比较

时间:2016-04-06 18:06:14

标签: php ajax

我遇到了一些AJAX调用问题。 AJAX用于更新表中的行,然后从PHP文件返回“成功”或“失败”。然后在AJAX中检查响应以查看是否收到“成功”或“失败”,这是给我带来麻烦的部分。

这是通过检查响应是否等于“成功”或“失败”来完成的,如下所示:

    // Called on success
    request.done(function (response, textStatus, jqXHR) {
        if (response == "success") {
            $("#register-vehicle-message-failure").css('display', 'none');
            $("#register-vehicle-message-success").css('display', 'block');
            $("#register-vehicle-text-success").html("SUCCESS");
        } else if (response == "failure") {
            $("#register-vehicle-message-success").css('display', 'none');
            $("#register-vehicle-message-failure").css('display', 'block');
            $("#register-vehicle-text-failure").html("FAILURE");
        }
    });

基本上应该显示一条消息,表明它是否成功,但是没有显示任何消息。

我后来尝试了其他一些显示出一些结果的东西。我用'else'替换'else if','else block'中的代码开始运行。

    // Called on success
    request.done(function (response, textStatus, jqXHR) {
        if (response == "success") {
            $("#register-vehicle-message-failure").css('display', 'none');
            $("#register-vehicle-message-success").css('display', 'block');
            $("#register-vehicle-text-success").html("HEY");
        } else {
            $("#register-vehicle-message-success").css('display', 'none');
            $("#register-vehicle-message-failure").css('display', 'block');
            $("#register-vehicle-text-failure").html(response);
        }
    });

这导致始终在'else'块中运行代码,无论行是否更新。我还更改了文本的html以显示响应(else块中的最后一行),并且显示的响应实际上是正确的!

如果行成功更改,那么'if(response ==“success”)'比较将不起作用,但'else block'中的代码运行并显示消息“success”(来自ajax的响应) )。如果行无法更新,则会执行相同操作,其中“失败”显示为消息。

因为我从PHP文件(成功或失败)收到了正确的响应,所以我认为问题在于进行比较。有人可以解决这个问题吗?感谢。

完整的PHP代码

<?php

require_once('validation_util.php');
session_start(); // - Begin session

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    if (isset($_POST['register_iccid']))
    {
        // Retrieve the data inputted by a registering user and sanitize + format the data
        $iccid = sanitizeData($_POST['register_iccid']);


        require_once 'dbconnect.php';
        $conn = getConnection(); // - Connect to DB

        $user_id = 0;

        // Store the user's ID (must be logged in via session or cookie)
        if (isset($_SESSION['user_id']))
            $user_id = $_SESSION['user_id'];
        else if (isset($_COOKIE['remember_user']))
            $user_id = $_COOKIE['remember_user'];

        $sqlstatement = $conn->prepare("UPDATE `vehicles` SET `owner_id` = :owner_id WHERE `vehicle_iccid` = :iccid");
        // Bind the values
        $sqlstatement->bindValue(':owner_id', $user_id, PDO::PARAM_INT);
        $sqlstatement->bindValue(':iccid', $iccid, PDO::PARAM_STR);
        $sqlstatement->execute();

        // If a row is returned (Only 1 row should be returned)
        if ($sqlstatement->rowCount() == 1)
            echo "success";
        else
            echo "failure";

        $conn = null; // - Close connection
    }
}

?>

这将显示“成功”或“失败”,以显示sql更新是否成功。

完整的AJAX代码

$(document).ready(function () {

    var request; // - Ajax request

    $('#register-vehicle-form').submit(function (e) {
        // Abort any pending requests
        if (request) {
            request.abort();
        }

        var url = "../php/vehicle_registration.php"; // - Php file path to request from
        var $form = $(this); // - Store form in var
        var $fields = $form.find("input");

        // Serialize form data
        var serializedData = $form.serialize();

        // Disable form elements (after the form data has been serialized)
        $fields.prop("disabled", true);

        // Fire the request to vehicle_registration.php file
        request = $.ajax({
            url: url,
            type: "post",
            data: serializedData
        });

        // Called on success
        request.done(function (response, textStatus, jqXHR) {
            if (response == "success") {
                $("#register-vehicle-message-failure").css('display', 'none');
                $("#register-vehicle-message-success").css('display', 'block');
                $("#register-vehicle-text-success").html("SUCCESS");
            } else {
                $("#register-vehicle-message-success").css('display', 'none');
                $("#register-vehicle-message-failure").css('display', 'block');
                $("#register-vehicle-text-failure").html(response);
            }
        });

        // Called on failure
        request.fail(function (jqXHR, textStatus, errorThrown) {
            console.error("Error: " + textStatus, errorThrown);
        });

        // Called always
        request.always(function () {
            $fields.prop("disabled", false); // - Re-enable the input fields
        });

        // Prevent default behaviour of form, so we can submit it here
        e.preventDefault();
    });
});

0 个答案:

没有答案