使用Ajax发布数据

时间:2017-09-29 11:31:49

标签: javascript php jquery ajax database

我一直在尝试使用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的新手,请原谅我这是非常简单的事情!

由于

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

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数据。

答案 1 :(得分:0)

也许这很有帮助。

<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>

<强> confirm.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 ');
}