2013-10-05 52 views
0

我想我已經接近這個了,但是由於某種原因,當json數據到達php頁面時並沒有打印出來。Json對象在php頁面上沒有回顯

這是我的形式與一些僞數據:

<form id="add_form" action="javascript:void(0);"> 
    <fieldset> 
     <input type="text" value="5" name="dogs" id="dogs" /> 
     <input type="text" value="10" name="cats" id="cats" /> 
    </fieldset> 
</form> 

下面是相關函數(從按鈕運行時,上述未示出):

function add() 
{ 
    $.ajax({ 
    type: 'POST', 
    cache: false, 
    url: 'add.php', 
    data: { json: $('#add_form').serialize() }, 
    success: success 
    }); 
} 

最後在PHP,我可以」 t似乎使工作:

$json_object = json_decode($_POST['json']); 
echo $json_object; 

我真的是能夠得到每個元素的值在形式上(不管有多少表單元素)。一如既往,感謝您願意給予的任何建議。

+0

的print_r($ JSON_OBJECT)和print_r的($ _ POST [ 'JSON'])只是爲了檢查數據是否得到發佈返回 –

+0

您傳遞數據作爲發佈,因此它將使用$ _POST進行訪問。試試我的答案,這將是工作。 –

+1

*「出於某種原因json數據不能打印出來」*你根本沒有發送JSON。 –

回答

0

相反的,

function add() 
{ 
    $.ajax({ 
    type: 'POST', 
    cache: false, 
    url: 'add.php', 
    data: { json: $('#add_form').serialize() }, 
    success: success 
    }); 
} 

你必須使用,

function add() 
{ 
    var data = $('#add_form').serialize(); 
    $.ajax({ 
    type: 'POST', 
    cache: false, 
    url: 'add.php', 
    data: data, 
    success: success 
    }); 
} 

然後訪問一樣,

$_POST['dogs']; 
0

有沒有必要解碼json,因爲您的表單數據傳遞到php頁面爲「POST」類型。所以請按照以下步驟操作。

$json = $_POST['json']; 
print_r($json); 
0

如果你想發送JSON,你必須首先創建JSON。 .serialize不返回JSON,它返回一個查詢字符串,你可以在閱讀documentation

.serialize()方法創建標準的URL編碼符號的文本字符串。它可以作用於選擇了單個窗體控件的jQuery對象,如<input>,<textarea><select>

也許你想:

data: { json: JSON.stringify($('#add_form').serializeArray()) }, 

,但似乎過於複雜。只需使用

data: $('#add_form').serialize(), 

,並通過$_POST['form_field_1']訪問在PHP端的數據等