2010-11-03 4 views
0

Salut j'utilise le code ci-dessous pour prendre des données et l'envoyer à une page php, cela fonctionne comme je le veux, mais son envoi seulement le premier ".order" il vient à travers, c'est à dire. J'ai besoin d'envoyer chaque élément avec class = "order", serait-ce une sorte de .each()?envoyer chaque élément avec le nom de la classe via AJAX php

$('#submit').click(function(){ 
        var order=$('.order').html(); 
        var dataString = 'order='+ order; 

        $.ajax 
         ({ 
         type: "POST", 
         url: "order.php", 
         data: dataString, 
         cache: false, 
         success: function(html) 
          { 
           $("#response").html(html); 
          } 
         }); 
      }); 

Avez-ce à la place et cela fonctionne maintenant, bizarre!

$('#submit').live('click',function(){ 
       var order=$('.order').text(); 
       var dataString = 'order='+ order; 

       $.ajax 
        ({ 
        type: "POST", 
        url: "order.php", 
        data: dataString, 
        cache: false, 
        success: function(html) 
         { 
          $("#response").html(html); 
         } 
        }); 
     }); 

Répondre

2

Essayez var order = $('form').serialize() comme expliqué ici http://api.jquery.com/serialize/

Autre que cela, vous devez faire quelque chose comme:

$('.order').each(function(){ 
    // Get values from order here... something like: order += $(this).html(); 
    // Also, note that if '.order' are inputs you should use $(this).val() instead of $(this).html(); 
}); 

espère que ce aide.

1

Je crois que cela devrait le faire:

var order=$('.order') 
    .map(function(){ return this.innerHtml; }) 
    .get().join(''); 
var dataString = 'order='+ order; 
+0

Vous devez coder la requête. La meilleure façon de procéder est de faire 'var dataString = {" order ": order};' et laisser jQuery gérer l'encodage. – lonesomeday

Questions connexes