2013-08-02 62 views
2

在我的本地機器上,我試圖從json中將數據保存到我的mysql數據庫,我正在使用Wampserver。未定義的索引在AJAX中發佈的PHP

在我的html頁面(saveInfo.php),我有這樣的jQuery代碼:

<script type="text/javascript"> 
      var jsObj = {"user_id":5, "login":"hsm"}; 
      var jsonobj = JSON.stringify(jsObj);    
      $.ajax({ 
       type: "POST", 
       url: "json_handler.php", 
       data: { 'jsonobj':jsonobj },  
       success: function(){ 
        alert('success'); 
        window.location = "http://localhost/quranMapping/php/json_handler.php"; 
       } 
      }); 
</script> 

在另一邊,我有我的服務器端的PHP代碼(json_handler.php)這樣的:

<?php 

$input = file_get_contents('php://input'); 
$input = $_POST['jsonobj']; 

$result = json_decode($input); 

echo $result->user_id; 

?> 

但是當我運行的代碼,我得到這個錯誤: enter image description here

+0

這可能意味着$ _POST ['jsonobj']沒有設置。你需要確保jsonobj的值傳遞給php頁面。 – Maximus2012

+0

var_dump($ result)'是什麼? –

+0

它看起來像變量沒有達到PHP。你可以'var_dump($ _ POST)'並輸出結果。另外,也可以使用Firefox或Chrome獲取您的傳出POST請求的轉儲,並將其發佈到此處。 –

回答

3

您應該刪除這個:

var jsonobj = JSON.stringify(jsObj); 

,改變

data: { 'jsonobj':jsonobj }, 

data: jsObj, 

在PHP端對數據進行解碼只需要用

$user_id = isset($_POST["user_id"])?$_POST["user_id"]:""; 
$login = isset($_POST["login"])?$_POST["login"]:""; 

也沒有必要做

$input = file_get_contents('php://input'); 

由於表單以對象形式發佈爲數據,因此值將爲application/x-www-form-urlencoded,因此它不是有效的json。

+2

在客戶端上命名爲'jsonobj',但在服務器上命名爲'jsObj'? – mishik

+0

@mishik好的,趕上...謝謝 – Orangepill

+0

數組(大小= 0):這是輸出 –