【问题标题】:Update DB with jQuery sortable ajax call in CakePHP在 CakePHP 中使用 jQuery 可排序 ajax 调用更新数据库
【发布时间】:2012-08-16 21:42:43
【问题描述】:

我正在尝试使用 jQuery 的 sortable 对表中的行进行简单的重新排序。我的拖放工作正常,我的问题是保存我的 ajax 调用的新行顺序,特别是将数据发送到我在 CakePHP 中的操作。我整天都在搜索和尝试不同的东西,但无济于事。基本上,根本没有更新数据库。

如果我使用空操作运行我的 ajax 调用,我可以获得成功:回调以提醒某些东西,我理解这意味着它成功地击中了我的操作。如果我在那里错了,请纠正我。这是我的 jQuery 和 AJAX 调用:

$('#featured-items tbody').sortable({

    cursor: 'move',
    stop:function(i) {

        $.ajax({
            type: "GET",
            url: "/admin/features/reorder",
            data: $('#featured-items tbody').sortable("serialize"),
            success: function() {
                alert($('#featured-items tbody').sortable("serialize"));
            }               
        });

    }

}).disableSelection();

我发送的数据是:

item[]=2&item[]=1&item[]=24

有人可以帮助我了解如何在控制器操作中访问我的数据吗?到目前为止,我有这个(通过查看其他示例)。我使用的是 Cake 1.3,我的模型称为 Feature。

function admin_reorder()
{
    $this->autoRender = false;

    if($this->RequestHandler->isAjax())
    {
        foreach($this->data['item'] as $order => $id)
            $this->Feature->id = $id;
            $this->Feature->saveField('priority', $order);
    }
}

【问题讨论】:

    标签: jquery ajax jquery-ui cakephp jquery-ui-sortable


    【解决方案1】:

    尝试使用 $_GET/$_POST 代替 $this->data :

    function admin_reorder()
    {
        $this->autoRender = false;
    
        if($this->RequestHandler->isAjax())
        {
            foreach($_GET['item'] as $order => $id)
                $this->Feature->id = $id;
                $this->Feature->saveField('priority', $order);
            }
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      据我所知,$this->data 仅用于已发布 数据,而在您的 AJAX 调用中您使用的是 GET 方法。尝试将您的方法更改为 POST:

      $('#featured-items tbody').sortable({
      
          cursor: 'move',
          stop:function(i) {
      
              $.ajax({
                  type: "POST",
                  url: "/admin/features/reorder",
                  data: $('#featured-items tbody').sortable("serialize"),
                  success: function() {
                      alert($('#featured-items tbody').sortable("serialize"));
                  }               
              });
      
          }
      
      }).disableSelection();
      

      【讨论】:

      • 您好,感谢您的回复。我已经尝试了两种方法——我在 CakePHP 之外创建了一个version,我工作得很好,它使用了 GET。我也尝试过POST。我必须在表单中使用它吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 2013-03-04
      • 2013-03-10
      • 2016-08-03
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多