在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);
});
});
}
});
});
答案 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'];