【问题标题】:jquery, serialize the ui.itemjquery,序列化 ui.item
【发布时间】:2010-12-28 19:42:19
【问题描述】:

这是我目前所拥有的。 我的代码包含在 php 中,所以里面有一些 php。

$(document).ready(function() {
    $(\"ul.droptrue\").sortable({
        connectWith: '.droptrue',
        remove:function(event, ui){ 
              var order = $(ui.item).serialize; 
              alert( order );
        },
        receive : function () {
          var order = $(this).sortable('serialize');
                  var list = 'list[]='+this.id+'&list[]=".$module[1]."&';
                  $.ajax({
                    type: 'POST',
                    url: '".__BASE_URL."modules/admin/moduleUpdate.php',
                    data: list+ order,
                    success: function(msg){alert(msg);},
                    error: function(msg){alert( \"Data Error: \"
+ msg );}
                  });
      }
    }); });

所以我想要做的是获取 ui.item 的序列化版本。使用接收部分,我得到“listItem[]=3&listItem[]=4...”的输出,但使用 ui.item,我得到“function () {return o.param(this.serializeArray());}” .

如何获得 ui.item 的序列化版本?

【问题讨论】:

    标签: jquery-ui jquery-ui-sortable serialization


    【解决方案1】:

    你写道:

    var order = $(ui.item).serialize;
    

    你可能想写:

    var order = $(ui.item).serialize();
    

    【讨论】:

      【解决方案2】:

      我发现我做错了什么。所以这个问题不再需要帮助了。

      对我所做的事情的简要总结。

      我使用了 sortable 的更新功能,然后我使用 php 来确定正在更改的内容以及如何更改它。

      这里是jquery代码:

          $('ul.droptrue').sortable({
          placeholder: 'ui-state-highlight',
          connectWith: '.droptrue',
        update : function (event, ui){
      
              //vars needed
              var sender = null;
              var item = ui.item.context.id;
              var target = event.target.id;
      
              var order = $(this).sortable('serialize');
      
              if(ui.sender != null){
                  sender = ui.sender.context.id;
              }
              $.ajax({
                  type: 'POST',
                  data: 'list[]='+this.id+'&list[]='+item+'&list[]=".$dirt[1]."&list[]='+sender+'&'+order,
                  url: 'modules/admin/moduleUpdate.php'
              });
        }
      });
      

      这是我使用的php:

      $widgetParts = explode('_', $_POST['list'][1]);
      $widget = $widgetParts[1];
      
      switch ($_POST['list'][0]) {
      case 'header_layout':
          if($_POST['list'][3] == 'null'){
              if(isset ($_POST['listItem'])){
                  if(in_array($widget, $_POST['listItem'])){
                      foreach ($_POST['listItem'] as $key => $value) {
                          $sql = "UPDATE widget_layouts SET weight=".$key." WHERE module_id=".$_POST['list'][2]." AND position=1 AND widget_id=".$value;
                          mysql_query($sql);
                      }
                  }
              }else{
                      $sql = "DELETE FROM widget_layouts WHERE module_id=".$_POST['list'][2]." AND widget_id=".$widget." AND position=1";
                      mysql_query($sql);
                  }
      
          }else{
              foreach ($_POST['listItem'] as $key => $value) {
                  $sql = 'SELECT * FROM widget_layouts WHERE  module_id='.$_POST['list'][2].' AND widget_id='.$value.' AND position=1';
      
                  if(mysql_num_rows(mysql_query($sql)) == 0){
                      $sql = "INSERT INTO widget_layouts VALUES (".$_POST['list'][2].",".$widget.",1,".$key.")";
                      mysql_query($sql);
                  }
              }
          }
      
          break;
      case 'content_layout':
          if($_POST['list'][3] == 'null'){
              if(isset ($_POST['listItem'])){
                  if(in_array($widget, $_POST['listItem'])){
                      foreach ($_POST['listItem'] as $key => $value) {
                          $sql = "UPDATE widget_layouts SET weight=".$key." WHERE module_id=".$_POST['list'][2]." AND position=2 AND widget_id=".$value;
                          mysql_query($sql);
                      }
                  }
              }else{
                      $sql = "DELETE FROM widget_layouts WHERE module_id=".$_POST['list'][2]." AND widget_id=".$widget." AND position=2";
                      mysql_query($sql);
                  }
          }else{
              foreach ($_POST['listItem'] as $key => $value) {
                  $sql = 'SELECT * FROM widget_layouts WHERE  module_id='.$_POST['list'][2].' AND widget_id='.$value.' AND position=2';
                  if(mysql_num_rows(mysql_query($sql)) == 0){
                      $sql = "INSERT INTO widget_layouts VALUES (".$_POST['list'][2].",".$widget.",2,".$key.")";
                      mysql_query($sql);
                  }
              }
          }
          break;
      case 'sidebar_layout':
          if($_POST['list'][3] == 'null'){
              if(isset ($_POST['listItem'])){
                  if(in_array($widget, $_POST['listItem'])){
                      foreach ($_POST['listItem'] as $key => $value) {
                          $sql = "UPDATE widget_layouts SET weight=".$key." WHERE module_id=".$_POST['list'][2]." AND position=3 AND widget_id=".$value;
                          mysql_query($sql);
                      }
                  }
              }else{
                      $sql = "DELETE FROM widget_layouts WHERE module_id=".$_POST['list'][2]." AND widget_id=".$widget." AND position=3";
                      mysql_query($sql);
                  }
          }else{
              foreach ($_POST['listItem'] as $key => $value) {
                  $sql = 'SELECT * FROM widget_layouts WHERE  module_id='.$_POST['list'][2].' AND widget_id='.$value.' AND position=3';
                  if(mysql_num_rows(mysql_query($sql)) == 0){
                      $sql = "INSERT INTO widget_layouts VALUES (".$_POST['list'][2].",".$widget.",3,".$key.")";
                      mysql_query($sql);
                  }
              }
          }
          break;
      case 'footer_layout':
          if($_POST['list'][3] == 'null'){
              if(isset ($_POST['listItem'])){
                  if(in_array($widget, $_POST['listItem'])){
                      foreach ($_POST['listItem'] as $key => $value) {
                          $sql = "UPDATE widget_layouts SET weight=".$key." WHERE module_id=".$_POST['list'][2]." AND position=4 AND widget_id=".$value;
                          mysql_query($sql);
                      }
                  }
              }else{
                      $sql = "DELETE FROM widget_layouts WHERE module_id=".$_POST['list'][2]." AND widget_id=".$widget." AND position=4";
                      mysql_query($sql);
                  }
          }else{
              foreach ($_POST['listItem'] as $key => $value) {
                  $sql = 'SELECT * FROM widget_layouts WHERE  module_id='.$_POST['list'][2].' AND widget_id='.$value.' AND position=4';
                  if(mysql_num_rows(mysql_query($sql)) == 0){
                      $sql = "INSERT INTO widget_layouts VALUES (".$_POST['list'][2].",".$widget.",4,".$key.")";
                      mysql_query($sql);
                  }
              }
          }
          break;
      case 'widget_layout':
         foreach ($_POST['listItem'] as $key => $value) {
              $sql = "DELETE FROM widget_layouts WHERE module_id=".$widget." AND widget_id=".$value;
              $query = mysql_query($sql) or die(mysql_error());
         }
          break;
       }
      

      这些代码让我可以创建一个拖放列表来动态布局我的网站,而不会有任何麻烦。我希望这些代码可以帮助遇到与我相同类型的问题的人。

      【讨论】:

        猜你喜欢
        • 2013-09-24
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多