Jquery AJAX пост для обновления базы данных - PullRequest
2 голосов
/ 19 июля 2011

Я использую следующий код в своей 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 ]

1 голос
/ 19 июля 2011

Вы уверены, что у «slotnumber» есть значение?Также вы пытались отправить объект, а не строку?var dataString = {'slot': slotnumber}; - EDIT в вашей функции попробуйте передать элемент в функцию onclick="clickme(this);"

function clickme(el)
{
// $(function() {
//    $(".gridsquare").click(function() {

    var slotnumber = $(el).attr('name');
    // var gridnumber = $(this).attr('class');
1 голос
/ 19 июля 2011

Вы прокомментировали // $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";
}
0 голосов
/ 19 июля 2011

Вы уверены, что генерируете HTML правильно или это просто опечатка? Вы закрываете тег div перед атрибутами. Попробуйте это

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

0 голосов
/ 19 июля 2011

Я надеюсь, что перед обновлением в db вы правильно установили соединение

в вашем supergridupdate.php, который вы делаете

$slot = $_POST['slot']; 

, поэтому в вашем запросе ajax вам нужноделать

data:{slot:dataString},

HTH

0 голосов
/ 19 июля 2011

Точно так же, вы подключены к своей базе данных в этом файле "supergridupdate.php"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...