为了便于阅读,我已经删除了部分代码。通过拖动col_1:
的子元素触发更改事件时,将执行以下位置函数$('#col_1').Sortable(
{
change: 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;
}
因此Post不会发送到服务器。但我注意到,如果我改为
$('#col_1').Sortable(
{
change: function() { positions(); },
}
);
当单击col_1中的子节点的句柄时,会发送ajax帖子,但不能再对元素进行排序。具有
change: function(data) { positions(); },
也不发送ajax请求,尽管这些元素已经过排序。
我如何克服这个问题?我做错了什么,或者是UI可排序的问题吗?
答案 0 :(得分:0)
我放了一个可能对你有帮助的脚本。这是一个完整的例子,点击这里: XML POST EXAMPLE
(例如,搜索 test.php )
答案 1 :(得分:0)
是的我明白了,我还有另一种怀疑(如果不是这样的话,对不起)。
这种怀疑是因为我没有看到onreadystatechange在你的代码中的位置。
正如您已经知道的那样,onreadystatechange将调用您喜欢的某些功能,而不是相反。
我不明白为什么
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
必须在一个函数内部,这将使事情重新开始并找到你的自我穿越状态,直到每次你调用位置时的状态。如果你查看我的代码,它就不属于这个功能了。我的代码中的事物是如何由于努力工作而产生的,并且会影响很多事情。
同时查看使用方式和位置onreadystatechange
。
这就是我想提到的:
处理xml请求(你希望它只在初始化时调用一次)所以在函数内部看起来并不是一个好主意(更糟糕的是,如果你考虑变量范围!!!!)< / p>
关注onreadystatechange和其他xml http代码,你希望它在你的功能中每次都带来新的结果!!!
照顾好各州!
我要求理解是否所有情况都不是这样,答案是没有帮助的!
至于jquery,我根本不使用它。
答案 2 :(得分:0)
change
回调是否需要return true;
才能生效?
如果是这样,您可以更新代码以使用change: function(data) { return positions(); }