1

onclick イベントを使用してフォーム要素が追加されるフォームがあります。

次に、フォーム要素とその値およびラベルが配列に保持されます。

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 形式で取得しています。

4

1 に答える 1

0

2つのことを強くお勧めします。

1 つはjQuery.serializeについて学習することです。jQuery.serializeは、すべての要素を 1 つの文字列にまとめるために行った大変な作業を行います。

JSON文字列が無効でない限り、json_decodeは機能します。受信内容を確認し、JSONLintでJSON構文をテストして、正しいかどうかを確認してください。

PHPでは、json_decodeを使用する必要があり、それを実行できます。

<?php
$array = json_decode($json_string);
foreach ($array as $key => $value) {
     echo "key: ". $key ." => ". $value;
}
?>
于 2012-07-04T13:21:26.180 に答える