for bucle dentro de la función jquery-ajax en php

Estoy haciendo una aplicación de calificación en php, aquí quiero escribir un bucle for dentro de una llamada de función jQuery ajax. No sé cómo es la sintaxis correcta.

El código PHP que utilicé es

for(i=1;i<=4;i++)
{
<div class="like">
<a href="#" class="like" id="1" name="up"><img src="images/likebig.png"></a>
<a href="#" class="like" id="1" name="down"><img src="images/dislike.png"></a>

 <form>
 <input type="hidden" id="<?php echo $i; ?>" value="<?php echo $_SESSION['r_id'][$i]?>">
 </form>
}
</div>

El código anterior da cuatro resultados. Aquí quiero obtener el valor ($_SESSION['r_id'][$i]) de cada resultado en el clic de su clic correspondiente

La función jQuery que utilicé es

<script type="text/javascript">

    $(document).ready(function()
    {
    $(".like").click(function(e)
    {
    e.preventDefault();
    var id=$(this).attr("id");
    var name=$(this).attr("name");
    var fname = $("#fname").val();
    var lname = $("#lname").val();
    var email = $("#email").val();
    for(var i=1;i<=4;i++)
    {
    var rel[i] = $("#i").val();
    }
    var dataString = 'id='+ id + '&name='+ name + '&fname='+ fname + '&lname='+ lname + '&email='+ email;
     $.ajax
      ({
      type: "POST",
      url: "rate.php",
      data: dataString,
      cache: false,
      });
     });
    });
</script>

preguntado el 04 de julio de 12 a las 05:07

No debería esto for(i=1;i<=4;i++) be for($i=1;$i<=4;$i++)? -

1 Respuestas

cambia esto

var rel[i] = $("#i").val();

a:

var rel[i] = $("#" + i).val();

alternativamente puedes usar .serialize() método:

El método .serialize () crea una cadena de texto en notación estándar codificada en URL. Opera en un objeto jQuery que representa un conjunto de elementos de formulario. Los elementos del formulario pueden ser de varios tipos:

$.ajax({
   type: "POST",
   url: "rate.php",
   data: $('form').serialize(),
   cache: false,
 });

Respondido 04 Jul 12, 05:07

lo siento, pero ¿cómo respondió esto a la "pregunta" del bucle for? - Tradiblix

@tradyblix su sintaxis de bucle for es correcta, creo que quiere $("#" + i) en lugar de $("#i"). - indefinido

@undefined Hola amigo, gracias por su respuesta. Pero cuando traté de alertar el valor, muestra el error "falta; antes de la declaración" en la consola de errores de Firebug: Balu

@undefined Hola. Cambié la línea [var rel[i] = $("#i").val();] a [var rel[i] = $("#" + i).val();] y trató de alertar el valor rel[1]. - Balu

@Balu define el rel[] matriz fuera del bucle for en cada iteración que está definiendo una y otra vez. ¿Tienes elementos de formulario por id? #2 #3 ... ? si no, los valores de la matriz serán undefined. - indefinido

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.