2012-07-11 72 views
0

我試圖編碼併發送JSON數組PHP頁面並把它添加到MySQL:發送和解碼JSON陣列

var data = $('form').serialize(); 
$.ajax({ 
    type: 'POST', 
    url: 'naujas.php', 
    dataType: 'json', 
    data: ({ 
     json: JSON.stringify(data) 
    }), 
    success: function() { 
     $('#naujas').load('naujas.php'); 
    } 
}); 

但我認爲它不工作我碰到這樣的PHP的迴應: pav=1&ppav=2&kiekis=3&kaina=4d&ppav=5&kiekis=6&kaina=7&ppav=8&kiekis=9&kaina=0

php文件

<?php 
    $json = json_decode($_POST['json']); 
    echo $json; 
?> 

我做錯了什麼?

+1

.serialize()爲您提供了一個查詢字符串,.serializeArray()可能更接近你想要什麼 – Musa 2012-07-11 19:04:56

回答

2

嘗試這樣的:

var data = $('form').serializeArray().reduce(function(obj,cur){ 
    obj[cur.name] = cur.value; 
    return obj; 
},{}); 

說明

  • .serializeArray()返回一個數組,其具有以下結構:

    [ {name:"inputname1",value:"inputvalue1"}, 
        {name:"inputname2",value:"inputvalue2"}, 
        //--------------------------------------- 
        {name:"inputnamen",value:"inputvaluen"} ] 
    
  • .reduce()函數轉換該數組反對:

    { "inputname1":"inputvalue1", 
        "inputname2":"inputvalue2", 
        //--------------------------------------- 
        "inputnamen":"inputvaluen" } 
    
+0

你編輯的代碼只給了我最後的表單字段值而不是所有的數組。 – 2012-07-12 21:26:23

+0

@OsvaldaKazlaučiūnaitė所以你有多種形式?我理解對嗎? – Engineer 2012-07-13 17:56:42

+0

好,表格是一個,但我可以添加額外的行設置 – 2012-07-13 19:46:42

0

dataType: 'json'已經告訴jQuery的一個JSON格式發佈數據。

所有你需要做的是發佈您的數據,這樣的事情:

data: (data),

的問題來自於你的對象轉換爲字符串表示(字符串化)。

+2

'dataType'指定* response-body *類型,而不是* request-body *類型! – Engineer 2012-07-11 19:21:14

+0

如果你只是做數據:數據,你可能會遇到類似的問題,就像我在這裏:http://stackoverflow.com/questions/11385668/js-ajax-calling-php-and-getting-ajax-call-data – MrB 2012-07-11 19:22:50

+0

@Engineer:Upvoted,你是對的,無論如何我的回答都偏離了軌道,我誤解了OP的問題。 – 2012-07-11 21:54:08