1

この問題に関する他のいくつかの提案を見てきましたが、何らかの理由で私のデータが投稿されていません。私のコードの関連セクションは次のとおりです。

<input type="button" id="map_submit" value="Map Selection" />
<?php var_dump($_POST); ?>  // display the posted variables

<script type="text/javascript">
    $(document).ready(function(){
        $('#map_submit').click(function(){

            /*  this part is from the slickgrid plugin, in which
             *  selectedData is an array that I want to post to the page
             *  and read via php
             */
            var selectedData = [], selectedIndexes;
            selectedIndexes = grid.getSelectedRows();
            jQuery.each(selectedIndexes, function (index, value) {
                 selectedData.push(grid.getData()[value]);
            });

            $.post("mapper.php", {dataArray: selectedData});
        });
    });
</script>

私が他の質問から見たものから、うまく$.postいくはずです。しかし、ボタンをクリックしても、var_dump からは何も表示されません。健全性チェックとして、これをjavascriptに追加すると:

for (var i = 0; i < selectedData.length; i++) {
     document.write(selectedData[i].questionID + "<br />");
}

グリッドで選択した値が印刷questionIDされます (もちろん、新しく空白のページに)。

4

2 に答える 2

2
$.post("mapper.php", {dataArray: selectedData});

この行は問題ありません。なぜ誰もが JSON を提案しているのかわかりません。なぜなら、それはここでは不必要だからです。JSONを使用せずに、通常どおりオブジェクト/配列をPOSTできます。

注: これはページをリロードしません。AJAX 経由でPOST するmapper.phpため、ページのどこにも何も表示されません。AJAX 呼び出しが何を返したかを確認するには、開発ツールを調べる必要があります。

または、POST が返すデータを確認できます。

$.post("mapper.php", {dataArray: selectedData}, function(data){
    console.log(data); // check your console, you should see some output
});
于 2012-06-21T14:50:59.687 に答える
1

オブジェクトを使用する前に、オブジェクトを事前にシリアル化し、サーバー上で (おそらく PHP で) 逆シリアル化する必要があります。

以下の例 (json2.js が必要):

<script type="text/javascript">
    $(document).ready(function(){
        $('#map_submit').click(function(){

            /*  this part is from the slickgrid plugin, in which
             *  selectedData is an array that I want to post to the page
             *  and read via php
             */
            var selectedData = [], selectedIndexes;
            selectedIndexes = grid.getSelectedRows();
            jQuery.each(selectedIndexes, function (index, value) {
                 selectedData.push(grid.getData()[value]);
            });

            $.post("mapper.php", JSON.stringify({dataArray: selectedData}));
        });
    });
</script>

<input type="button" id="map_submit" value="Map Selection" />
<?php var_dump(json_decode($_POST, true)); ?>  // display the posted variables
于 2012-06-21T14:36:19.590 に答える