2014-06-27 51 views
0

我試圖用一個Ajax請求如何發送JSON對象在AJAX到PHP頁面

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function() 
{ 
    var data = 
    {'name':'Sam','ID':'1345'}; 
    var test = {} 
    test["data"] = JSON.stringify(data); 
    $("#btnsend").click(function() 
    { 
     $.ajax({ 
      type:"POST", 
      url:"/demo.php", 
      dataType:'json', 
      data:test, 
      success: function(data) 
       { 
       console.log('success'); 
         } 
      error: function() 
      { 
       console.log('failure'); 

      } 
     }); 

    }); 

}); 
</script> 

這送一個JSON對象的PHP頁面demo.php是我在jQuery的嘗試,但它在我的php頁面沒有呈現。在我嘗試以下幾種:

<html> 
     <?php 

     $json = json_decode(stripslashes($_POST['data']), true); 
     echo var_dump($json); 

     ?> 

     <body> 
     Hello World !!! 
     </body> 
     </html> 

但它是在控制檯打印失敗。請幫我解決一下這個。

+1

刪除所有的HTML,它試圖解析一個無效的JSON,只是編碼和回聲它(沒有vardump等,請確保沒有通知生成)! –

回答

3

編輯:我最初的答案是錯的,你到了error功能的原因,是你指定:

dataType:'json', 

所以jQuery的期待你的PHP腳本的輸出是有效的JSON。它不是,你正在返回文本/ HTML,所以這就是爲什麼你的功能永遠不會到達。

已經設置你的PHP腳本(輸出HTML)的樣子,你可能應該只是刪除:

dataType:'json', 

,然後你會得到你的成功的功能。

順便說一句,直到你做的東西(秀...)的data變量在success功能沒有被呈現在頁面上:

success: function(data) { 
    console.log('success'); 
    $('#some_element').html(data); // to put the output in #some_element 
} 

而在你的PHP腳本,你應該只發回/回聲你想要顯示在你的HTML元素,所以沒有htmlbody標籤。

+0

@adi請參閱我編輯的答案。 – jeroen

+0

謝謝@ jeroen它爲我工作。 – adi