【问题标题】:Save Button not work on jQuery-UI Connected Sortable Lists保存按钮不适用于 jQuery-UI 连接的可排序列表
【发布时间】:2016-06-22 07:26:09
【问题描述】:

根据 Test Drag&Drop element with connectedSortable from sortable1 在左侧和 sortable2 在右侧通过保存按钮,我们仍然存在结果数组数据未发送到我的数据库的问题。

HTML 文件

<div style="margin: 25px 0;">
  <button id="save">Save</button>
</div>

<ul id="sortable1" class="connectedSortable"><b>Left side</b>
  <!--<?php echo $column1; ?>-->
  <li id="entry_1" class="ui-state-default">Entry #1</li>
  <li id="entry_2" class="ui-state-default">Entry #2</li>
  <li id="entry_3" class="ui-state-default">Entry #3</li>
</ul>

<ul id="sortable2" class="connectedSortable"><b>Right side</b>
  <!--<?php echo $column2; ?>-->
  <li id="entry_4" class="ui-state-default">Entry #4</li>
  <li id="entry_5" class="ui-state-default">Entry #5</li>
  <li id="entry_6" class="ui-state-default">Entry #6</li>
</ul>

jQuery

$(function () {
    $("#sortable1, #sortable2").sortable({
        connectWith: '.connectedSortable',

        update: function (event, ui) {
            var order = $(this).sortable('serialize');

            $(document).on("click", "#save", function () 
            { 
                $.ajax(
                {
                    //data: order,
                    //data: $("#sortable").sortable("serialize"),
                    type: 'POST',
                    url: 'draggable.php',
                    data: 
                    {
                        sort1:$("#sortable1").sortable('serialize'),
                        sort2:$("#sortable2").sortable('serialize')
                    },
                    success: function(html)
                    {
                        //$('.success').fadeIn(500);
                    }
                });
            });
        }


    }).disableSelection();
    $('#save').on('click', function () {
        var r = $("#sortable1, #sortable2").sortable("toArray");
        var a = $("#sortable1, #sortable2").sortable("serialize", {
            attribute: "id"
        });
        console.log(r, a);
    });
});

点击保存按钮后数据应保存到数据库中。

但是我当前在此页面上的演示存在问题。

我们可以拖放,但数据不能保存到数据库。 javascript 函数保存或 ajax 更新中可能缺少某些内容。

备注:关于项目自动保存对我来说没有问题我们有问题只能通过保存按钮保存你可以在这里看到 jsfiddle.net/verawat/7cu6vtqf/3

我尝试在 jsfiddle 上添加 Demo 示例,如下所示。

1. Drag&Drop Connected Sortable Auto Save (Good job. No have Problem)

2. Drag&Drop Connected Sortable Save by onClick Button Save (This is my problem)

【问题讨论】:

    标签: jquery ajax jquery-ui


    【解决方案1】:

    第一次发生更新时,您不会发送任何 AJAX 请求,只是添加事件处理程序。

    您不应在其他事件处理程序中添加事件处理程序。你的代码应该是这样的:

    $(function() {
      function sendRequest() {
        $.ajax({
          type: 'POST',
          url: 'draggable.php',
          data: {
            sort1: $("#sortable1").sortable('serialize'),
            sort2: $("#sortable2").sortable('serialize')
          },
          success: function(html) {
            //$('.success').fadeIn(500);
          }
        });
      }
    
      $("#sortable1, #sortable2").sortable({
        connectWith: '.connectedSortable',
        update: sendRequest
      });
    
      $(document).on("click", "#save", sendRequest)
    });
    

    【讨论】:

    • 感谢 TJ 对我的帮助。您的代码在拖动元素后自动保存。谢谢,但仍然没有解决我的问题。我们只需要点击保存按钮,然后将数据保存到数据库。
    • 您不想自动保存?然后删除update: sendRequest?
    • 感谢 TJ。我试图根据您的评论删除update: sendRequest。结果是好的(拖动元素后不自动保存)但主要问题仍然存在(保存按钮不起作用,单击按钮保存时无法保存),我们只需单击保存按钮然后将数据保存到数据库。感谢 TJ 继续提供帮助。我爱你。
    • @VerawatKrawnneat 那是因为您使用的是古老版本的 jQuery 。使用高于1.7jsfiddle.net/tu13qzfm/17 的较新版本或使用旧语法进行事件绑定。
    • 感谢 Tj 先生。 --- 工作已经...成功非常感谢您的建议。这个项目对我来说非常重要。我和我的家人永远不会为此忘记你。
    猜你喜欢
    • 2013-01-10
    • 2013-05-14
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2016-09-14
    • 1970-01-01
    相关资源
    最近更新 更多