在jquery UI Sortable中触发'change'事件时,不发送ajax帖子

时间:2011-05-29 18:28:49

标签: jquery ajax user-interface jquery-ui-sortable

为了便于阅读,我已经删除了部分代码。通过拖动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可排序的问题吗?

3 个答案:

答案 0 :(得分:0)

我放了一个可能对你有帮助的脚本。这是一个完整的例子,点击这里: XML POST EXAMPLE

(例如,搜索 test.php

答案 1 :(得分:0)

是的我明白了,我还有另一种怀疑(如果不是这样的话,对不起)。

这种怀疑是因为我没有看到onreadystatechange在你的代码中的位置。

正如您已经知道的那样,onreadystatechange将调用您喜欢的某些功能,而不是相反。

我不明白为什么

xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');

必须在一个函数内部,这将使事情重新开始并找到你的自我穿越状态,直到每次你调用位置时的状态。如果你查看我的代码,它就不属于这个功能了。我的代码中的事物是如何由于努力工作而产生的,并且会影响很多事情。

同时查看使用方式和位置onreadystatechange

这就是我想提到的:

  1. 处理xml请求(你希望它只在初始化时调用一次)所以在函数内部看起来并不是一个好主意(更糟糕的是,如果你考虑变量范围!!!!)< / p>

  2. 关注onreadystatechange和其他xml http代码,你希望它在你的功能中每次都带来新的结果!!!

  3. 照顾好各州!

  4. 我要求理解是否所有情况都不是这样,答案是没有帮助的!

    至于jquery,我根本不使用它。

答案 2 :(得分:0)

change回调是否需要return true;才能生效? 如果是这样,您可以更新代码以使用change: function(data) { return positions(); }