jquery, сериализовать ui.item - PullRequest
       14

jquery, сериализовать ui.item

0 голосов
/ 21 декабря 2009

Это то, что я имею до сих пор. Код, который у меня есть, содержится в 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?

Ответы [ 2 ]

1 голос
/ 29 декабря 2009

Я понял, что я делаю неправильно. Так что этот вопрос больше не нуждается в помощи.

Краткое описание того, что я сделал.

Я использовал функцию обновления сортируемой, а затем использовал 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;
 }

Эти фрагменты кода позволяют мне создавать перетаскиваемый список для динамического размещения моего сайта без каких-либо хлопот. Я надеюсь, что эти фрагменты кода могут помочь кому-то, кто сталкивается с той же проблемой, что и я.

1 голос
/ 21 декабря 2009

Вы писали:

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

Вы, вероятно, хотели написать:

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