0

http://maureenmoore.com/momp_112412/112412.htmlで、ドロップ可能なボックスにドラッグされた div の配列を作成しようとしています。閲覧元をご覧ください。

$.post を使用して div を php ファイル process.php に送信すると、結合された 1 つの配列ではなく、ドラッグした div の数に応じて 1 ~ 3 個の配列が得られます。$_REQUEST オブジェクト (つまり、ドロップされた div) を配列にプッシュしたい

$stack = array();
foreach ($_REQUEST as $key => $value) {
            array_push($stack,$value);
          }
print_r($stack);

しかし、それぞれキーがゼロの1〜3個の配列が得られます。たとえば、ドラッグされた 3 つの div から 1 つの配列を取得するにはどうすればよいですか?

リンクから移植されたコード:

$(document).ready(function(){
  $( "#draggable1" ).draggable({ grid: [ 20,20 ] });
  $( "#draggable2" ).draggable({ grid: [ 20,20 ] });
  $( "#draggable3" ).draggable({ grid: [ 20,20 ] });     

  $( "#droppable_box" ).droppable({                
     drop: function( event, ui ) {
       var data = $(ui.draggable).attr('id');
       $("#response").append(data);
       $('#myId').click(function(event){
         $.post("process.php",({id : data}),function(data,status){  
          alert("Data: " + data);
         });
       });
      }
   });
});
4

2 に答える 2

1

あなたのコードが で同一のキーを与える理由は完全にはわかりません$stackが、コードを次のワンライナーに書き直すことができます。

$stack = array_values($_REQUEST);

ところで、のブラインドコピーを作成することは、$_REQUESTそれほど有用ではないようです:)

アップデート

これで JavaScript が追加されました。このコード:

$('#myId').click(function(event){
     $.post("process.php",({id : data}),function(data,status){  
      alert("Data: " + data);
     });
   });

.droppable()宣言の外に置く必要があります。

于 2012-12-16T13:50:51.063 に答える
0

ドロップ関数内でクリックをバインドし、3 回のドロップが行われた場合は 3 回バインドし、3 つの ajax リクエストを開始します。

次のようにする必要があります。

$(document).ready(function() {
    var data = [];
    $("#draggable1").draggable({ grid: [20, 20] });
    $("#draggable2").draggable({ grid: [20, 20] });
    $("#draggable3").draggable({ grid: [20, 20] });

    $("#droppable_box").droppable({
        drop: function(event, ui) {
            data.push($(ui.draggable).attr('id'));
            $("#response").append($(ui.draggable).attr('id'));
        }
    });

    $('#myId').click(function(event) {
        $.post("/echo/html/", ({ id: data }), function(return_data, status) {
            alert(data);
        });
    });
});​

サーバー側でそれを取得します$_POST['id'];

于 2012-12-16T13:52:07.447 に答える