Jquery AJAX post更新数据库


Jquery AJAX post to update database

我在我的HTML表单中使用以下代码-尝试制作一种"彩票刮刮票"类型的效果。有一个网格,每件物品都有一个来自数据库的动态数字。单击正方形调用clickme()函数,调用db,然后更改图像。我只是在第一部分,试图让数据库更新。

我的PHP/HTML:

    if ($unlock == 0) { 
    echo '<div> class="' . $currentgrid .'" name="' . $slot . '"   
    onclick="clickme();" style="cursor: pointer;">'; 
    } else { echo '<div>'; }

和我的javascript.js文件:

function clickme()
{
// $(function() {
//    $(".gridsquare").click(function() {
    var slotnumber = $(this).attr('name');
    // var gridnumber = $(this).attr('class');
    var dataString = 'slot='+ slotnumber;
    // + '&gridnumber=' + gridnumber;
        $.ajax({
            type: "POST",
            url: "post/supergridupdate.php",
            data: dataString,
            success: function(){
                // $('.success').fadeIn(200).show();
                // $('.error').fadeout(400).hide;
            }
        });
    return false;
//    });
// });
}

supergridupdate.php:

    <?php 
     $slot = $_POST['slot']; 
     // $gridnumber = $_POST['gridnumber']; 
     $gridnumber = 1;
     $sql = "INSERT INTO test (slot, gridnumber) VALUES ('$slot', '$gridnumber')";
     $result = mysql_query($sql) or die(mysql_error()); 
     ?> 

现在它都显示了,我可以点击div但是数据库没有更新。

更新:得到它的工作与帮助,只是简单地传递变量在javascript函数现在,而不是使用jquery。

您确定'slotnumber'有值吗?你也试过发送一个对象而不是字符串吗?var dataString = {'slot': slotnumber};——编辑在函数中尝试将元素传递给函数onclick="clickme(this);"

function clickme(el)
{
// $(function() {
//    $(".gridsquare").click(function() {
    var slotnumber = $(el).attr('name');
    // var gridnumber = $(this).attr('class');

您已经评论了// $gridnumber = $_POST['gridnumber'];

如果你在查询中使用它,不确定是否会导致错误。

添加

success: function(data){
 alert(data);
}

你可以执行echo $result或Exception,看看它是否抛出任何错误吗?同样执行echo $sql,这将提醒查询。这样你就可以知道到底发生了什么。

还可以将查询执行包装在try catch中以确保安全

try{
   $result = mysql_query($sql) or die(mysql_error()); 
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "'n";
}

就像这样,您是否连接到文件"supergridupdate.php"上的数据库?

我希望在db更新之前,您已经正确建立了连接

在你的supergridupdate。php中你做的是

$slot = $_POST['slot']; 

所以在ajax请求中你需要输入

data:{slot:dataString},

HTH

您确定生成的html是正确的还是只是一个错别字?在属性之前关闭div标记。试试这个

echo '<div class="' . $currentgrid .'" name="' . $slot . '" onclick="clickme();" style="cursor: pointer;">';