2009-12-21 5 views
0

C'est ce que j'ai jusqu'ici. Le code que j'ai est contenu dans php donc il y a du php dedans. Donc, ce que j'essaye de faire est d'obtenir une version sérialisée de l'ui.item. Avec la section de réception je reçois une sortie de "listItem [] = 3 & listItem [] = 4 ..." mais avec l'ui.item j'obtiens "function() {return o.param (this.serializeArray()); } ".jquery, sérialiser l'ui.item

Comment puis-je obtenir une version sérialisée de ui.item?

Répondre

1

Je compris ce que je faisais mal. Donc, cette question n'a plus besoin d'aide.

Un bref résumé de ce que j'ai fait. J'ai utilisé la fonction de mise à jour du triable, puis j'ai utilisé php pour déterminer ce qui est en train de changer et comment le changer.

Voici le code 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' 
     }); 
    } 
}); 

Voici le php je:

$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; 
} 

Ces morceaux de code me permettent de créer un glisser-déposer la liste de mise en page dynamique mon site sans n'importe quelle dispute. J'espère que ces morceaux de code pourraient aider quelqu'un qui a le même type de problème que j'avais.

1

Vous avez écrit:

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

Vous vouliez sans doute écrire:

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