Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery使用rails序列化不';不适用于自定义ID_Javascript_Jquery_Ruby On Rails_Serialization_Jquery Ui Sortable - Fatal编程技术网

Javascript jQuery使用rails序列化不';不适用于自定义ID

Javascript jQuery使用rails序列化不';不适用于自定义ID,javascript,jquery,ruby-on-rails,serialization,jquery-ui-sortable,Javascript,Jquery,Ruby On Rails,Serialization,Jquery Ui Sortable,我很确定这是某种Javascript错误,而不是Rails错误,在我的id上做了无数次puts()测试之后 我想做的是使用jQuery的serialize函数序列化一堆li。我想根据一组自定义的id来做。。。在我的例子中,podli-1、podli-2、podli-3等等。我尝试使用序列化“表达式”选项来实现这一点 当我尝试用警报(如下所示)调试它时,我从中得到的结果是:id=undefined&id=undefined&id=undefined&id=undefined&id=undefine

我很确定这是某种Javascript错误,而不是Rails错误,在我的id上做了无数次puts()测试之后

我想做的是使用jQuery的serialize函数序列化一堆li。我想根据一组自定义的id来做。。。在我的例子中,podli-1、podli-2、podli-3等等。我尝试使用序列化“表达式”选项来实现这一点

当我尝试用警报(如下所示)调试它时,我从中得到的结果是:id=undefined&id=undefined&id=undefined&id=undefined&id=undefined&id=undefined&id=undefined&id=undefined

--这实际上是李的正确编号,但由于某些原因,所有id都未定义。正如我所说的,所有这些都在Rails中工作,但是有一些JS错误

以下是Rails代码

<% @pods.each do |podli| %>
<% @podli = podli %>
<% @iden = 'podli-' << @podli.id.to_s %>
<li id="<%= @iden %>" class="ui-state-default">
   ....
</li>
<% end %>

....

下面是javascript

$(document).ready(function(){
transitions();
//$( "#sortable" ).sortable({containment: 'parent'});
$(  "#sortable"  ).sortable({ items: '.ui-state-default', containment: 'parent'})//for moving the pods about
$( "#sortable" ).disableSelection();
//$("#newspod" ).val("Enable Sort").closest("#newspod").removeClass("sortable")
$('#sortable').live('sortstop', function(event) {
    var u = $(this).sortable('serialize', { key: 'id', expression: /podli-\d/ })//  + '&index=' + jQuery(this).attr("id").substring(19);
    alert(u);
    $.ajax({
      type: 'POST', 
      data: { display_order: u },//$('#receiving-list').sortable('serialize')  + '&index=' + jQuery(this).attr("id").substring(19), 
      url: "<%= sort_dashboards_path %>"
    })

});
$(文档).ready(函数(){
过渡();
//$(“#可排序”).sortable({containment:'parent'});
$(“#sortable”).sortable({items:'.ui state default',containment:'parent'})//用于在周围移动播客
$(“#可排序”).disableSelection();
//$(“#新闻播客”).val(“启用排序”).closest(“新闻播客”).removeClass(“可排序”)
$('#sortable').live('sortstop',函数(事件){
var u=$(this).sortable('serialize',{key:'id',expression:/podli-\d/})/+'&index='+jQuery(this).attr(“id”).substring(19);
警报(u);
$.ajax({
键入:“POST”,
数据:{display_order:u},//$('#receiving list').sortable('serialize')+'&index='+jQuery(this.attr(“id”).substring(19),
网址:“
})
});
}))

当您调用“serialize”方法(通过“sortable”插件)时,您的“expression”regex必须包含一个捕获组,该组包含的值应为:

 var u = $(this).sortable('serialize', { key: 'id', expression: /podli-(\d+)/ });
通过将“\d”(请注意,我无法控制自己,我在括号中添加了“+”,以防有超过10个)括起来,插件将从正则表达式中得到它所期望的结果


该方法的jQuery UI文档非常糟糕。

非常感谢!我将把这个标记为已解决,但你能解释一下什么是捕获组以及为什么我需要它吗?(我意识到这与李的区别有关——他们的身份证号码)