2013-12-15 89 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文件:

$(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

感謝您的回答!我只是嘗試了退出(),但隨後頁面全部空白,真正打印...我不知道如何使用控制檯:( – 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參數exprects一個key:value數組像POST或GET。 –

+0

嗯它不工作,仍然頁面刷新,它說真正打印在頁面的頂部。感覺這裏還有其他的錯誤,我在函數中查詢的值並不是被假定爲返回的thrue ...另外,如果我改變了數據參數,就像你說的那樣,它如何在我的類中找到正確的方法? – Lisa