为了可读性,我删掉了部分代码。当通过拖动col_1:的子元素触发更改事件时,将执行以下位置功能
$('#col_1').Sortable(
{
change: positions,
}
);
问题是"positions"向服务器发送了一个ajax帖子,但没有通过:
function positions(){
**i've removed some javascript code leading to a javascript variable called "variable" ***
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('POST', '/positions.php', true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("epositions="+variable);
xmlhttp.send(null);
return true;
}
因此,邮件不会发送到服务器。但我注意到,如果我把
$('#col_1').Sortable(
{
change: function() { positions(); },
}
);
当点击col_1中的子节点的句柄时,ajax帖子就会被发送,但元素无法再进行排序。具有
change: function(data) { positions(); },
也不发送ajax请求,尽管元素已排序。
我该如何克服这个问题?我是做错了什么,还是UI排序有问题?
我编写了一个可能对您有所帮助的脚本。这是一个完整的示例,请单击此处:XML张贴示例
(例如,搜索test.php)
是的,我有其他怀疑(如果不是这样的话,很抱歉)。
这种怀疑是因为我看不出onreadystatechange在你的代码中的位置。
正如您已经知道的,onreadystatechange将调用一些您喜欢的函数,而不是相反。
我不明白为什么
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
必须在一个函数内,这将使事情重新开始,并发现你自己在状态中旅行,直到每次你调用位置时处于4个状态。如果你看看我的代码,它已经失效了。在我的代码中,事情是如何分离的?这是努力工作的结果,会对事情产生很大影响。
还要查看onreadystatechange
的使用方式和位置。
这就是我想提到的:
处理xml请求(您希望它在一开始只调用一次),所以在函数内部看起来不是一个好主意(如果您考虑变量作用域,情况会更糟!!)
注意onreadystatechange和其他xmlhttp代码,您希望它出现在您的函数中,这样每次它都会带来新的结果!!!
照顾好各州!
如果事实并非如此,答案毫无帮助,我请求理解!
至于jquery,我根本不使用它。
change
回调是否需要return true;
才能工作?如果是这样,您可以更新代码以使用change: function(data) { return positions(); }