0

少し問題があります。jQuery を使用した JavaScript があり、PHP から取得した配列を操作します。スクリプトでは、2 つの新しい配列にデータを追加します。ここで問題が発生します。これら 2 つをどのように扱うことができますか私のPHPファイルの配列?2 つの新しい配列からのデータをデータベースに保存する必要があります。PHP には、ユーザーに関するデータを入力するフォームがあります。データを PHP に送り返す簡単な方法を知っている人はいますか?

スクリプトに関する情報: 学校の名前を含むテーブルと、学校の ID を値として含むチェックボックスがあります。チェックボックスの1つをチェックまたはチェック解除すると、スクリプトは、この特定のユーザーのデータベースに既に保存されている学校であるか、または新しいユーザーであるかをチェックします。

    <script>
        var schools = [];
        var oldschools = [];
        var uncheckedschools = [];
        oldschools = <?php echo json_encode($oldschoolids); ?>;

        $(".checkbox").change(function() {
            if(this.checked) {
                var additem = $(this).val();
                for (var i=0; i<oldschools.length; i++) {
                    if (additem == oldschools[i]) {
                        uncheckedschools = jQuery.grep(uncheckedschools, function(value) {
                            return value != additem;
                        });
                    }
                }
                schools.push(additem);
            } else {
                var removeitem = $(this).val();
                for (var i=0; i<oldschools.length; i++) {
                    if (removeitem == oldschools[i]) {
                        uncheckedschools.push(removeitem);
                    }
                }
                schools = jQuery.grep(schools, function(value) {
                    return value != removeitem;
                });
            }
        });
    </script>

誰かがこの問題で私を助けてくれることを願っています!

4

1 に答える 1

4

更新をサーバーに送り返すには、AJAX を使用する必要があります。jQuery のajax()メソッドを使用すると、次のようになります。

$.ajax({
    url: 'path/to/serverside/file.php',
    dataType: 'json',
    data: {schools: schools},
    success: function(dataFromServer) {
        //after the save is successful, you can do something here 
    },
    error: function(dataFromServer) {
        //if there was an error handle it here
    }
});

編集: いくつかのコメンターが述べたようjson_decodeに、サーバー側で使用して、送り返す JSON オブジェクトをデコードする必要があります: http://php.net/manual/en/function.json-decode.php

于 2013-05-30T13:49:47.117 に答える