2011-04-04 113 views
0

我巨大的問題,試圖通過這種形式/傳遞一個可變長度的陣列,通過AJAX到PHP

<form id="form"> 
    <select id="<?php echo $answer['aid']; ?>" name="importance[<?php echo $answer['aid']; ?>]">      
            <option value="0">NO</option> 
            <option value="25">Unlikely</option> 
            <option value="50" selected="selected">Neutral</option> 
            <option value="75">Perhaps</option> 
            <option value="100">YES</option> 
         </select> 
<input 

type="submit" id="submit" value="Next"/> 
</form> 

我將如何使用jQuery/AJAX來填寫此表。我不想更新整個頁面,所以使用這個AJAX到目前爲止。

$('#form').submit(function() { 
    alert('Submit button clicked with ServiceID =' + serviceID); 
    var impArray = $('#form').serialize() 
    JSONstring = JSON.stringify(impArray) 
    alert(JSONstring); 
    $.ajax({ 
      type: "POST", 
      url: "update_KB.php", 
      data: JSONstring, 
      success: function(msg){ 
      alert("Data Saved: " + JSONstring); 
      } 
    }); 

它給了我一個字符串的字符串,看起來像這樣的警報

「的重要性%5B101%5D = 50 &重要性%5B100%5D = 50 &重要性%5B99%5D = 50 &重要性%5B98%5D = 50「

我將如何刪除%5B和%5D或將其解碼,以便將方括號轉回並將其轉換爲數組以提交給SQL字符串?

+0

只需編輯您的原始問題,而不是添加評論。點擊問題左下角的['edit'](http://stackoverflow.com/posts/5538659/edit)鏈接。用於構建表單HTML的PHP​​不如生成的HTML本身有用。 – 2011-04-04 12:48:47

+2

只發送序列化版本的數組,我不明白你爲什麼想要這個JSONstring = JSON.stringify(impArray) 。另外PHP也有json_decode()(php 5.2+)。 – arma 2011-04-04 12:49:13

回答

2

你可以使用json_decode()來解碼它在php 雖然我很好奇你爲什麼要發送你的整個表單,並且你已經發送它們作爲數組序列化?

0

你不需要改變%5D或%5B,你可以從發送數據的GET/POST獲取update_KB.php中的參數。如果您遇到任何問題,請填寫以下代碼 -

print_r ($_POST); OR print_r ($_GET); 

at your update_KB.php。然後你可以決定怎麼做。