2012-02-17 19 views
42

Estoy enviando una petición AJAX a un archivo PHP como se muestra aquí:Envío de varios parámetros de datos con jQuery AJAX

function checkDB(code, userid) 
{ 

    $.ajax({ 
    type: "POST", 
    url: "<?php bloginfo('template_url'); ?>/profile/check_code.php", 
    data: 'code='+code+'userid='+userid, 
    datatype: "html", 
    success: function(result){ 

     if(result == 0) 
     { 
      $('#success').html(code + ' has been redeemed!'); 
      // alert('success');//testing purposes 
     } 
     else if(result == 2) 
     { 
      $('#err').html( code + ' already exists and has already been redeemed....'); 
      //alert('fail');//testing purposes 
     }else if(result == 1){ 
      $('#err').html( code + ' redeem code doesnt exist');  
     } 

     alert(result);  
     } 
    }) 

} 

Esta es enviado llamar a la función de presentar, así:

<form method="post" class="sc_ajaxxx" id="sc_add_voucherx" name="sc_ajax" 
    onsubmit="checkDB(document.sc_ajax.sc_voucher_code.value, <?php echo $user_id ?>); return false;"> 
</form> 

El problema es que la variable user id php no se está enviando a la página check_code.php por ajax. o al menos no puedo hacer eco de la identificación de vuelta a la página.

¿Es esta la forma correcta de pasar múltiples valores a una página del lado del servidor? Sin el userid que pasa, funciona bien solo pasando el código.

Gracias chicos :)

Respuesta

112

Aquí es cómo deben ser formateados POST datos:

key1=value1&key2=value2&key3=value3 

En su caso (véase la categoría & como separador):

'code=' + code + '&userid=' + userid 

Pero jQuery hace eso para usted si especifica sus datos como un objeto:

data: { code: code, userid: userid } 
+1

Vale gracias. ¿Cómo lo especificaría como un objeto? ¿Sería esto tipo de datos: json? – JamesG

+0

No, no necesita cambiar su 'dataType'; eso es una pista para jQuery sobre cómo debe interpretar su respuesta. Los datos que envía se serializan de forma predeterminada como datos de publicación, p. 'código = 17 y userid = 42'. Solo necesita cambiar su cadena de datos en lo que escribí arriba y funcionará. –

+0

Ok, eso tiene sentido ... pero ¿por qué entonces quieres configurar tu dataType en JSON? Para leer en JSON específicamente? – JamesG

13

que puede establecer su data así:

data: 'code='+code+'&userid='+userid 
4

puede probar esto:

data: 'code='+code+'&userid='+userid, 

en lugar de

data: 'code='+code+'userid='+userid, 
0

Prueba este código ... se está trabajando para yo ...

<script type='text/javascript'> 
$(document).ready(function(){ 
    $(".star").click(function(){ 
    var rate_value1= $(this).index(".star")+1; 
    $.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "<?php echo(rootpath()) ?>/vote.php", 

data: { product_id: '<?php echo($product_id_to_permalink) ?>' , rate_value: rate_value1 } 

     }); 
     }); 
    }); 
</script>  
0

por lo general el envío de sus datos como este ayuda:

data: { code: code, userid: userid } 

lo más importante no olvidar es verificar si el nombre de las variables que está enviando son los mismos en el lado del servidor

0
Try this code... 
    <script> 
    function quote_ajax_table(){ 
     var doc_name = '<?php echo $test; ?>'; 
     var doc_no = '<?php echo $doc_no; ?>'; 

$.get('quote_ajax_table.php?doc_no='+doc_no+'&doc_name='+doc_name,function(data) { 
    $('.dyna').html(data); 
}); 
} 
</script> 

//in html code 
    <div class="dyna"></div> 
Cuestiones relacionadas