1

Je veux envoyer un tableau avec des chemins d'image et des légendes à un script PHP après avoir trié les images. Je peux faire 'serialize' ou 'toArray' dans les listes, mais comment obtenir les attributs de la balise img?jquery ui sérialisable triable des enfants

<ul class="gallery"> 
    <li id="li-1"> 
     <img src="tn/001.jpg" alt="first caption" /> 
    </li> 
    <li mycaption="some caption" id="li-2"> 
     <img src="tn/002.jpg" alt="second caption with éèçà international chars" /> 
    </li> 
</ul> 

$(".gallery").sortable({ 
    update : function() { 
     serial = $('.gallery').sortable('serialize'); 
     alert(serial); 
     /* $.ajax({ 
      url: "sort.php", 
      type: "post", 
      data: serial, 
      error: function() {alert("theres an error with AJAX");} 
     }); */ 
    } 
}); 

Répondre

1

est donc ici comment je sérialiser, dans un objet avec deux membres, src_arr et caption_arr:

var getPaths = function() { 
    var imgPaths = { 'src_arr': [], 'caption_arr': []}; 
    $('.gallery img').each(function(){ 
     imgPaths.src_arr.push($(this).attr('src')); 
     imgPaths.caption_arr.push($(this).attr('alt')); 
    }); 
    return imgPaths; 
}; 

Je ferais cela avec votre code:

$.ajax({ 
    url: "sort.php", 
    type: "POST", 
    dataType: 'html', 
    data: getPaths(), 
    success: function(data, textStatus, XMLHttpRequest) { 
     // you need to do something in here 
     $('#debug').html('<pre>' + data + '</pre>'); 
    }, 
    error: function() { 
     alert("theres an error with AJAX"); 
    } 
}); 

Les données brutes comme print_r() sur sort.php ressemblent à:

Array 
(
    [src] => Array 
     (
      [0] => tn/001.jpg 
      [1] => tn/002.jpg 
     ) 

    [caption] => Array 
     (
      [0] => first caption 
      [1] => second caption with éèçà international chars 
     ) 

) 
+0

Merci beaucoup! Donc, il n'y a pas besoin d'utiliser sérialiser? Je pensais la même chose la nuit dernière. Il pourrait être utile si vous envoyez juste un ID de la mise à jour de DB peut-être? – FFish

+0

Assurez-vous de lire la documentation sur 'jQuery.ajax': http://api.jquery.com/jQuery.ajax/ - il est écrit" Les données à envoyer au serveur sont converties en une chaîne de requête, sinon Voir aussi l'option 'processData' pour empêcher ce traitement automatique.L'objet doit être une paire clé/valeur Si la valeur est un tableau, jQuery sérialise plusieurs valeurs avec la même clé {foo: ["bar1", "bar2"]} 'devient' '& foo = bar1 & foo = bar2''. " – artlung

Questions connexes