2012-02-17 21 views
42

io mando una richiesta AJAX in un file php come mostrato di seguito:Invio di parametri multipli di dati 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);  
     } 
    }) 

} 

Questo viene inviato chiamando la funzione di invio, in questo modo:

<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> 

Il problema è che la variabile php id utente non viene inviata alla pagina check_code.php da ajax. o almeno non riesco a riportare l'ID alla pagina.

È questo il modo corretto di passare più valori su una pagina lato server? Senza il passaggio dell'utente, funziona bene solo passando il codice.

Grazie ragazzi :)

risposta

112

Ecco come i dati devono essere formattati POST:

key1=value1&key2=value2&key3=value3 

Nel tuo caso (notare il & come separatore):

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

Ma jQuery fa per te se specifichi i tuoi dati come oggetto:

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

Ok grazie. Come dovrei specificarlo come oggetto? Questo sarebbe un tipo di dati: JSON? – JamesG

+0

No, non è necessario cambiare il tuo 'dataType' - questo è un suggerimento per jQuery come dovrebbe interpretare la tua risposta. I dati che invia sono per impostazione predefinita serializzati come dati post, ad es. 'Codice = 17 & userid = 42'. Hai solo bisogno di cambiare la stringa di dati in ciò che ho scritto sopra e funzionerà. –

+0

Ok questo ha senso ... ma perché vuoi impostare il tuo dataType su JSON? Leggere in JSON in particolare? – JamesG

13

si dovrebbe impostare il proprio data in questo modo:

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

si può provare questo:

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

invece di

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

Prova questo codice ... si sta lavorando per io ...

<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

solito inviare i dati come questo aiuta:

data: { code: code, userid: userid } 

la cosa più importante non dimenticare è quello di verificare se il nome delle variabili si sta inviando sono gli stessi nel lato server

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>