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

Posted

技术标签:

【中文标题】AJAX 使用从 PHP 生成的 HTML 调用的函数更新 MYSQL 数据库【英文标题】:AJAX update MYSQL database using function called from HTML generated from PHP 【发布时间】:2013-12-22 15:41:24 【问题描述】:

我有一个生成和显示表格的 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);

?>

【问题讨论】:

你可以试试 Firebug,看看你在调用 update.php 后得到了什么响应。 【参考方案1】:

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

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

像这样写你的点击选项。

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

【讨论】:

检查我的答案“更新”后添加的代码,如果它帮助你让我知道。 非常感谢。我还安装了 firebug,这一直在帮助我实际上能够查看已发布到 update.php 的内容。现在,当我创建我试图从页面上其他地方的 php echo 显示的 img 元素的副本时,它可以工作了。仍然试图让我的头脑围绕回声中的引号。反斜杠有什么用?我目前正在尝试的回声是这样的: echo " ";不知道是什么问题?【参考方案2】:

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 

【讨论】:

以上是关于AJAX 使用从 PHP 生成的 HTML 调用的函数更新 MYSQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Ajax表单提交我想通过id更改表单元素的值,以便脚本从php中的返回值进行下一次调用

如何不让用户直接从AJAX使用的浏览器访问php文件?

使用 php 和 jquery ajax 从 mysql 数据库中获取数据

PHP 从 Ajax 调用接收空的 $_POST 变量

使用 AJAX 调用下载 PHPExcel 文件

如何从 HTML 或 Javascript 调用 PHP 文件 [关闭]