簡體   English   中英

使用 Ajax 發布數據

[英]Posting data using Ajax

我一直在嘗試使用 AJAX 發布數據,這將更新我的數據庫中的一個字段,但是我在這樣做時遇到了麻煩。 一切似乎都應該運行良好,控制台中沒有錯誤,但我不知道為什么我的數據庫不會更新。

有人可以幫我嗎?

AJAX

function ajaxUpdate() {
        var arr = {var1: name, var2: age};
            $.ajax({
                url: 'ajax/confirm.php',
                type: 'POST',
                data: JSON.stringify(arr),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function(data) {
                    console.log("success");
                }
            });
        }

Confirm.php :

$name=$_POST['var1'];
$age=$_POST['var2'];

if($name == "Stuart") {
    mysqli_query($connection,"UPDATE people SET age='$age'");
}
else if($name == "Peter") {
    mysqli_query($connection,"UPDATE people SET age='$age'");
}

到我的數據庫的連接正在工作,因為我有$connection設置並轉到瀏覽器中的頁面/ajax/confirm.php並且我在我的控制台中看到“連接成功”,因為我定義成功。

所以我不確定為什么這不更新?

我的值沒有正確發布嗎?

我是 AJAX 的新手,所以如果這很簡單,請原諒我!

謝謝

請嘗試以下操作:

function ajaxUpdate() {
    var arr = {var1: name, var2: age};
        $.ajax({
            url: 'ajax/confirm.php',
            type: 'POST',
            data: arr,
            success: function(data) {
                console.log("success");
            }
        });
}

不是將對象轉換為 json 字符串,而是按原樣發送。

編輯:也刪除dataType和可能的contentType 您的代碼面臨 SQL 注入的風險。 查看准備好的語句和轉義mysql數據。

也許這很有幫助。

<script type="text/javascript">

    function ajaxUpdate() {
        var data = $('#formID').serialize();
            $.ajax({
                url: 'ajax/confirm.php',
                type: 'POST',
                data: data,
                dataType: 'json',
                encode : true,
                success: function(data) {

                    if(data == "ok"){
                        console.log("success");
                    }else{

                        console.log(data);
                    }
                }
            });
        }
</script>

確認.php

<?php

$name = $_POST['name'];
$age  = $_POST['age'];


switch ($name) {
    case 'Stuart':
        $sql  = "UPDATE people SET age = ? WHERE name = ? ";
        $stmt = mysqli_prepare($connection, $sql);
        mysqli_stmt_bind_param($stmt, 'si', $name, $age);
        if (mysqli_stmt_execute($stmt)) {
            echo json_encode('ok');
        } else {

            echo json_encode(mysqli_stmt_error($stmt));
        }
        break;
    case 'Peter':
        $sql  = "UPDATE people SET age = ? WHERE name = ? ";
        $stmt = mysqli_prepare($connection, $sql);
        mysqli_stmt_bind_param($stmt, 'si', $name, $age);
        if (mysqli_stmt_execute($stmt)) {
            echo json_encode('ok');
        } else {

            echo json_encode(mysqli_stmt_error($stmt));
        }
        break;

    default:

        echo json_encode('Unknown name ');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM