2012-02-17 20 views
42

jestem wysłanie żądania ajax do pliku php, jak pokazano tutaj:Wysyłanie wielu parametrów danych z 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);  
     } 
    }) 

} 

ten jest wysyłany wywołaniu funkcji na przedstawienia, tak jak poniżej:

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

Problem polega na tym, że zmienna php użytkownika nie jest wysyłana na stronę check_code.php przez ajax. lub przynajmniej nie wydaje mi się, żebym powrócił do strony id.

Czy jest to właściwy sposób przekazywania wielu wartości na stronie po stronie serwera? Bez podania identyfikatora przez użytkownika, działa on po prostu przekazując kod.

Dzięki chłopaki :)

Odpowiedz

112

Oto jak POST dane powinny być sformatowane:

key1=value1&key2=value2&key3=value3 

W twoim przypadku (uwaga & jako separatora):

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

Ale jQuery robi dla Ciebie, jeśli podasz swoje dane jako obiekt:

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

Ok dzięki. Jak określić to jako obiekt? Czy to będzie typ danych: json? – JamesG

+0

Nie, nie musisz zmieniać 'dataType' - to wskazówka dla jQuery, jak powinna interpretować twoją odpowiedź. Przesyłane dane są domyślnie serializowane jako dane post, np. 'code = 17 & userid = 42'. Musisz tylko zmienić swój ciąg danych na to, co napisałem powyżej i to zadziała. –

+0

OK, które ma sens ... ale dlaczego chcesz ustawić swój typ danych na JSON? Czytać w JSON w szczególności? – JamesG

13

należy ustawić data tak:

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

można spróbować to:

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

zamiast

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

spróbuj tego kodu ... to pracuje dla ja ...

<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

zwykle wysyłania danych jak to pomaga:

data: { code: code, userid: userid } 

najważniejszą rzeczą, aby nie zapomnieć jest sprawdzenie, czy nazwa zmiennych wysyłanych są takie same po stronie serwera

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> 
Powiązane problemy