2013-12-15 2 views
0

Я пытаюсь получить форму для работы с Ajax и json, но не могу ее обработать :( Если кто-то может помочь, я бы очень признателен! так много разных учебников, но не получить это право.Опубликовать простую форму с ajax и Json

  • в моей index.php у меня есть форма с только изображение, которое работает как кнопка.

  • Затем в другом файле (allFunctions.php) У меня есть класс. Внутри этого класса у меня есть функция, называемая giveCandy(), которая подключена к кнопке.

  • Тогда у меня есть файл js, с которым я сейчас пытаюсь работать с этим. Но когда я нажимаю кнопку, страница все еще обновляется, и я получаю значение true.

UPDATE: Тем не менее проблема со страницей освежающего ...

файл index.php:

<form action="index.php" method="POST"> 
<input type="hidden" name="candy" /> 
<input type="image" id="button_candy" class="four columns" src="views/img/candy.png"/> 
</form> 

Тогда в моей функции файла:

function giveCandy() 
    { 
     if (isset($_POST['candy'])) 
     { 

     $db = Database::getInstance(); 
     $classUser = new user(); 
     $userId = $classUser->getUserData($_SESSION['id']); 
     $user = $userId['id']; 

     $candyPiece = 10; 

     $query = $db->prepare("SELECT fullness, lastfed FROM userdata WHERE id = ?"); 
     $query->bindValue(1, $user); 

     $query->execute(); 
     $data = $query->fetch(); 

     $newFullness = $candyPiece + $data['fullness']; 

     try 
      { 
     $query = $db->prepare("UPDATE userdata SET fullness = $newFullness, lastfed = CURRENT_TIMESTAMP WHERE id = ?"); 
     $query->bindValue(1, $user); 

     $query->execute(); 
     //$this->calculateFullness(); 
     echo json_encode($query); 
      } 
     catch (PDOException $e) 
      { 
       echo 'Sorry iti could not eat at this time';   
      } 
     } 
    } 

Тогда js file:

$(document).ready(function() { 
    $('#button_candy').click(function (event) { 
     event.preventDefault(); 
     $.ajax({ 
      url: 'index.php', 
      method: 'POST', 
      data: $(this).serialize(), // your formdata (this refers to the form element) 
      dataType: 'json', 
      success: function (data) { // data is what your allFunctions.php php echos 
       $('#query').fadeOut(function() { 
        $('#query').html(data).fadeIn(); 
       }); 
       console.log('Ajax request returned successfully.'); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       console.log('Ajax request failed: ' + textStatus + ', ' + errorThrown); 
      }, 
     }); 
    }); 
}); 
+0

Попробуйте 'выход()' после 'json_encode' результат в PHP файле. Кроме того, проверьте нашу консоль, если ответ находится в правильном формате json. – Salman

+0

Спасибо за ваш ответ! Я просто попробовал exit(), но затем страница получает все пустое с истинным напечатанным ... Я не уверен, как использовать консоль :( – Lisa

+0

Зачем эта страница пуста? Это значит, что код не достигает $ .ajax. отлаживая это. В любом случае https://developers.google.com/chrome-developer-tools/docs/console необходим для отладки JavaScript. – Salman

ответ

0

allFunctions.php:

if ($_POST['candy']) { 
    allFunctions::giveCandy(); 
} 

class allFunctions { 

    static function giveCandy() 
    { 
     $db = Database::getInstance(); 
     // .... 

Js:

$(document).ready(function() { 
    $('#button_candy').submit(function (event) { 
     event.preventDefault(); 
     $.ajax({ 
      url: '../model/allFunctions.php', 
      method: 'POST', 
      data: $(this).serialize(), // your formdata (this refers to the form element) 
      dataType: 'json', 
      success: function (data) { // data is what your allFunctions.php php echos 
       $('#result').fadeOut(function() { 
        $('#result').html(data).fadeIn(); 
       }); 
       console.log('Ajax request returned successfully.'); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       console.log('Ajax request failed: ' + textStatus + ', ' + errorThrown); 
      }, 
     }); 
    }); 
}); 
+0

Привет, Спасибо за ответ! Я попытался изменить это, но я все равно получаю тот же результат. Я изменяю это: data: 'function = giveCandy()', к этому: data: $ (this) .serialize()? – Lisa

+0

Да, вот почему я написал его выше ...;) Параметр data исчисляет значение ключа: массив, как в POST или GET. –

+0

Хм он не работает, все еще обновляется страница, и он говорит True, напечатанный в верхней части страницы. Похоже, что здесь что-то не так, значения из моего запроса в функции не предполагается возвращать через ... Также, если я изменю параметр данных, как вы говорите, как он может найти правильный метод в моем классе? – Lisa

Смежные вопросы