0

http://maureenmoore.com/momp_112412/112412.html我正在尝试制作一个被拖入可放置框的 div 数组。请查看查看源代码。

我使用 $.post 将 div 发送到 php 文件 process.php ,它给我 1 到 3 个数组,具体取决于我拖动了多少个 div 而不是一个组合数组。我想使用将 $_REQUEST 对象(即删除的 div)推送到数组中

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

但它给了我 1 到 3 个数组,每个数组的键为零。如何从例如 3 个拖动的 div 中获取一个数组?

从链接移植的代码:

$(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

您在 drop 函数内绑定 click,如果进行了 3 个 drop,则绑定 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 回答