Javascript 如何将此多个json onChange发送到GET或POST

Javascript 如何将此多个json onChange发送到GET或POST,javascript,jquery,json,Javascript,Jquery,Json,我做了一些重新排序和移动列表之间的一些项目 我希望将所有更改的序列化输出(按顺序)放入一个变量中,并在每次其中一个更改时以post(或get)的形式发送。我试过了,但我发现我不能对包含序列化输出的文本区域应用onChange,因为有时会出现两个同时更改的情况(在列表之间移动项)。我该怎么做?我认为,一个包含所有单独json的新json也可以。我使用了以下代码: 初步答复 onListUpdate是您应该使用的正确方法 您可以使用 快速粗略示例: var updateOutput =

我做了一些重新排序和移动列表之间的一些项目 我希望将所有更改的序列化输出(按顺序)放入一个变量中,并在每次其中一个更改时以post(或get)的形式发送。我试过了,但我发现我不能对包含序列化输出的文本区域应用onChange,因为有时会出现两个同时更改的情况(在列表之间移动项)。我该怎么做?我认为,一个包含所有单独json的新json也可以。我使用了以下代码:

初步答复
onListUpdate
是您应该使用的正确方法

您可以使用

快速粗略示例:

     var updateOutput = function(e)
        {
            var list   = e.length ? e : $(e.target),
                output = list.data('output');
            if (window.JSON) {output.val(window.JSON.stringify(list.nestable('serialize')));/*, null, 2));*/}
            else {output.val('JSON browser support required for this demo.');

$.post( "test.php", output.val );

}
        };
或者:
list.nestable('serialize')

跟踪变化 我将向您的字段添加其他属性/数据。因此,您有一个
children
字段。我还将添加一个
parent
data属性。此外,我还将添加一个
以前的父项
。通过这种方式,您将能够检测当前父项何时与前一父项不匹配

初步答复
onListUpdate
是您应该使用的正确方法

您可以使用

快速粗略示例:

     var updateOutput = function(e)
        {
            var list   = e.length ? e : $(e.target),
                output = list.data('output');
            if (window.JSON) {output.val(window.JSON.stringify(list.nestable('serialize')));/*, null, 2));*/}
            else {output.val('JSON browser support required for this demo.');

$.post( "test.php", output.val );

}
        };
或者:
list.nestable('serialize')

跟踪变化
我将向您的字段添加其他属性/数据。因此,您有一个
children
字段。我还将添加一个
parent
data属性。此外,我还将添加一个
以前的父项
。通过这种方式,您将能够检测当前父项何时与前一父项不匹配

如果你也给我们HTML,那会有帮助的。也许在一个片段中,或者?请参阅jsfiddle.com
你的意思是什么
,因为有时会有两个同时更改“??”的情况(在列表之间移动项目),因为不同的用户正在使用该站点???或者因为我拖放一个组而同时进行???另外,为什么不发送整个序列化输出呢???这个库在每个组的文本区域中都有一个序列化的json。如果我更改了组中列表项的顺序,则共同响应文本区域中的json正在更改。但是,如果我将项目移动到另一个组,将在两个文本区域中进行更改。问题是,我不知道如何在发生变化时触发一个函数,这个函数将有一个输入变量,其中包含整个序列化输出
function onListUpdate(wholeJson){if(window.loadingPendding==false){window.loadingPendding==true;http.open('get','updateDB.php?newLists='+wholeJson+'&nocache='+Math.random());http.onreadystatechange=loadListReply;http.send(null);}否则{alert(“等待上一个操作的完成!”)}
如果您也给我们提供HTML,那会有所帮助。也许在一个片段中,或者?请参阅jsfiddle.com
你的意思是什么
,因为有时会有两个同时更改“??”的情况(在列表之间移动项目),因为不同的用户正在使用该站点???或者因为我拖放一个组而同时进行???另外,为什么不发送整个序列化输出呢???这个库在每个组的文本区域中都有一个序列化的json。如果我更改了组中列表项的顺序,则共同响应文本区域中的json正在更改。但是,如果我将项目移动到另一个组,将在两个文本区域中进行更改。问题是,我不知道如何在发生变化时触发一个函数,这个函数将有一个输入变量,其中包含整个序列化输出
function onListUpdate(wholeJson){if(window.loadingPendding==false){window.loadingPendding==true;http.open('get','updateDB.php?newLists='+wholeJson+'&nocache='+Math.random());http.onreadystatechange=loadListReply;http.send(null);}else{alert(“等待上一个操作完成!”)}
如何知道一个项目是移动到另一个组还是在同一个组中?为什么不将两个文本区域JSON都发送到服务器?这是简单的解决方案。否则,您将必须跟踪每个节点的父节点是谁。是的,这是解决方案,但问题是我不知道如何正确地执行。我不知道如何在不使用setTimeout的情况下等待所有文本区域完成。哦,这不是很难。生成两个布尔型全局变量。将“更改”事件处理程序放在它们两个上。调用handler1时,将flag1设置为true。调用handler2时,将flag2设置为true。还有一个常用的方法checkFlags。这将检查flag1和flag2。当两者都为真时,发送消息。然后将flag1和flag2设置为false。从handler1和handler2调用checkFlags。同样的问题…如果元素被移动到它自己的grup中,textarea 2将不再有任何更改…:(我如何知道一个项目是移动到另一个组还是在同一个组内?为什么不将两个文本区域JSON都发送到服务器?这是simples解决方案。否则,您必须跟踪每个节点的父节点是谁。是的,这是解决方案,但问题是我不知道如何正确地执行。我不知道如何等到在不使用setTimeout的情况下完成所有文本区域。哦,这不太难。创建两个布尔型全局变量。在这两个变量上都设置一个“更改”事件处理程序。当调用handler1时,将flag1设置为true。当调用handler2时,将flag2设置为true。还有一个通用方法checkFlags。这将检查flag1和flag2。当两者都为true时e、 发送消息。然后将flag1和flag2设置为false。从handler1和handler2调用checkFlags。同样的问题…如果元素在其自己的grup中移动,则textarea 2中将不再有任何更改…:(