2012-07-04 82 views
1

我有一個表單,使用onclick事件附加表單元素。如何編碼json.stringified輸出

然後將表單元素及其值和標籤保存在一個數組中。

function save_form() { 
    var x = document.getElementById("formBuilder"); 
    var elements_data = new Array; 
    for (var i = 0; i < x.length; i++) { 
     if (x.elements[i].type == 'checkbox' || x.elements[i].type == 'radio') { 
      var all_ele_value = []; 
      var ele_id = x.elements[i].id; 
      $("input:" + x.elements[i].type + "[name=" + ele_id + "[]]").each(function() { 
       all_ele_value.push($(this).val()); 
      }); 
      var end_value = all_ele_value.join(";"); 
     } 
     else if (x.elements[i].type == 'select-one') { 
      var ele_id = x.elements[i].id; 
      var end_value = $("#" + ele_id + " option").map(function (i, n) { 
       return n.value; 
      }).get().join(";"); 
     } 
     else { 
      var end_value = x.elements[i].value; 
     } 
    } 
    var form_data = JSON.stringify(elements_data); 
    $.post(software_url + 'form_manager/save_form', { 
     'form_data': form_data 
    }, function (data) { 
     alert(data); 
    }); 
} 

現在我想在我的php文件中編碼form_data。我想知道一種方法來做到這一點,因爲json_decode不起作用。 Iam以json格式獲取所有輸出.Bt我想遍歷它。

+0

可以顯示form_data的示例字符串嗎? –

+0

大問題是您在空數組上使用'JSON.stringify'。 'element_data'在創建後永遠不會被修改 – charlietfl

回答

0

我強烈推薦兩件事給你。

一個人正在學習關於jQuery.serialize,的工作,您可以將所有元素放在一個字符串中進行繁重的工作。

向右移動,json_decode不起作用,除非JSON字符串無效,請檢查您正在接收的內容並在JSONLint上測試您的JSON語法 - 以查看它是否正確。

在php中,你必須使用json_decode,然後你可以通過它。

<?php 
$array = json_decode($json_string); 
foreach ($array as $key => $value) { 
    echo "key: ". $key ." => ". $value; 
} 
?>