AJAX使用从PHP生成的HTML调用的函数更新MYSQL数据库


AJAX update MYSQL database using function called from HTML generated from PHP

我有一个php页面生成并显示一个表。对于表中的最后一行,我想显示一个带有"onclick"函数的图像。这将把所选行的用户名发送到一个脚本,该脚本将使用AJAX更新数据库。该表显示良好,但AJAX不起作用。我的php显示图像是:

echo "<td> <img id='tblimg' 
    onclick='like('" . $row['Username'] . "')' 
    src='like.jpg' alt='like/dislike image' 
    width='80px' height='30px'></td>";

javascript函数是:

<script type="text/javascript" >
        function like(user) 
        {
            $.ajax(
                url: "update.php",
                type: "POST",
                data: { 'username': user, 'liked': '1' },                   
                success: function()
                            {
                                alert("ok");                                    
                            }
            );
        }
</script>       

这里是update.php:

<?php
$con=mysqli_connect("","sam74","********","sam74");
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$Username = $_POST['username'];
$Liked = $_POST['liked'];   
$sql = "UPDATE 'followers' SET 'Liked' = '$Liked' WHERE 'Username' = '$Username'";
if (!mysqli_query($con,$sql))
{
    die('Error: ' . mysqli_error($con));
}
mysqli_close($con);

?>

这段代码中有一些错误,让我逐行帮助您。

echo "<td> <img id='tblimg' 
onclick=''like('" . $row['Username'] . "');'' 
src='like.jpg' alt='like/dislike image' 
width='80px' height='30px'></td>";

javascript函数是:

逃离你的报价onclick事件第一

    function like(user) 
    {
        $.ajax({
            url: "update.php",
            type: "POST",
            data: { 'username': user, 'liked': '1' },                   
            success: function()
                        {
                            alert("ok");                                    
                        }
        });
    }

将{和}添加到ajax调用

删除表名和字段中的引号

$sql = "UPDATE followers SET Liked = '$Liked' WHERE Username = '$Username'";

在ajax成功的情况下,在函数开始后,您总是可以打印一条消息来查看您的函数是否被调用,如果php脚本返回了一些错误,请对该使用警报

更新

success: function(data){
   alert(data); // this will print you any php / mysql error as an alert                                    
}

更新2

这样写你的onclick选项。

echo "<img onclick='"like('" . $row['Username']. "');'" 
src='like.jpg' alt='like/dislike image' 
width='80px' height='30px' />";

jQuery.ajax()函数期望传递一个对象;您需要使用{}来开始和结束对象文字。你目前拥有的是无效的JavaScript语法,如果你检查浏览器的开发工具,你会看到一个错误。因此:

$.ajax(
    url: "update.php",
    type: "POST",
    data: {
        'username': user,
        'liked': '1'
    },
    success: function () {
        alert("ok");
    }
);

应该是

$.ajax({ // added {
    url: "update.php",
    type: "POST",
    data: {
        'username': user,
        'liked': '1'
    },
    success: function () {
        alert("ok");
    }
}); // added }