我正在整理一个拖放页面,其中可拖动的框包含由sql表填充的内容。一旦盒子被拖走,它就会消失,并且会出现一个带有新数据的新盒子。
我只想在任何时候出现15个框,但我不知道如何使用SQL,因为在加载后会出现拖放框,因此php不会帮助我 - 在页面加载之前,是否需要将框名称列表预先加载到js数组中?这是否意味着我的整个清单会向公众公开?
我已经使用xml表编写了这个,我正在迁移到sql。这是我编写的函数,每次发生JQuery drop事件时都会调用它:
function AddNextSkill() {
var div = document.getElementById('productbox');
div.innerHTML = div.innerHTML + '<div class="product" id= "box' + RunningCount +' "><h4>' + MyToolList[RunningCount][1] + "</h4></div>";
RunningCount += 1;
$("#productbox .product").draggable({//JQUERY DETAILS//}
});
在这种情况下,我在JS MyToolList [i] [j]中创建了一个预加载的数组,其中包含一系列工具及其ID。
这是一种效率低下的方法吗?使用sql并不预先加载任何表会更好吗?
答案 0 :(得分:0)
我通过以下方式解决了这个问题:
我创建了一个AJAX调用,只返回表中的下一行(带有
)LIMIT $_GET[rownum], 1
在SQL查询结束时调用。然后,每次发生丢弃事件时,我都会调用此AJAX调用。唯一的技巧是你必须重新建立新的盒子作为droppable。
function AddNewRow() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var div = document.getElementById('productbox');
div.innerHTML = div.innerHTML + xmlhttp.responseText;
}
}
xmlhttp.open("GET", "AddNewTool.php?rownum=" + RunningCount, true);
xmlhttp.send();
$("#productbox .product").draggable({//JQUERY DETAILS//}
});