ajax帖子在'更改'事件在jquery UI Sortable中触发



为了可读性,我删掉了部分代码。当通过拖动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的使用方式和位置。

这就是我想提到的:

  1. 处理xml请求(您希望它在一开始只调用一次),所以在函数内部看起来不是一个好主意(如果您考虑变量作用域,情况会更糟!!)

  2. 注意onreadystatechange和其他xmlhttp代码,您希望它出现在您的函数中,这样每次它都会带来新的结果!!!

  3. 照顾好各州!

如果事实并非如此,答案毫无帮助,我请求理解!

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

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

相关内容

  • 没有找到相关文章