Jquery AJAX发布更新数据库

时间:2011-07-18 20:17:19

标签: php jquery ajax

我在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。

5 个答案:

答案 0 :(得分:1)

您评论了// $gridnumber = $_POST['gridnumber']; 并且您在查询中使用它,不确定是否会导致错误。

添加此

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

你能回复$ result或Exception,看看它是否会抛出任何错误?也可以使用echo $ sql来提醒查询。这样你就可以看到究竟发生了什么。

还将try catch中的查询执行包装为安全

try{

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

答案 1 :(得分:1)

你确定'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');

答案 2 :(得分:0)

就像那样,您是否已连接到该文件“supergridupdate.php”上的数据库?

答案 3 :(得分:0)

我希望在您已正确建立连接的db中进行更新之前

你正在做的supergridupdate.php中的

$slot = $_POST['slot']; 

所以在你的ajax请求中你需要做

data:{slot:dataString},

HTH

答案 4 :(得分:0)

你确定你正确地生成了html,还是只是一个错字。您正在关闭属性前的div标记。试试这个

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