PHP array_push不适用于jquery $ _REQUEST对象

时间:2012-12-16 13:47:03

标签: php jquery jquery-ui-droppable array-push

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);
         });
       });
      }
   });
});

2 个答案:

答案 0 :(得分:1)

我不完全确定为什么你的代码会在$stack中提供相同的密钥,但你可以将代码重写为这个单行代码:

$stack = array_values($_REQUEST);
是的,盲目复制$_REQUEST并不是那么有用:)

<强>更新

您已经添加了JavaScript;这段代码:

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

应放在.droppable()声明之外。

答案 1 :(得分:0)

你在drop函数中绑定了click,如果有3个drop就绑定了三次,并且发出了三个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'];

获得该服务器