2012-02-17 38 views
42

Tôi gửi một yêu cầu ajax vào một tập tin php như ở đây:gửi nhiều tham số dữ liệu với 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);  
     } 
    }) 

} 

này được gửi gọi hàm trên gửi, như vậy:

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

Vấn đề là biến người dùng id php không được gửi đến trang check_code.php bởi ajax. hoặc ít nhất tôi không thể lặp lại id trở lại trang.

Đây có phải là cách chính xác để chuyển nhiều giá trị đến trang phía máy chủ không? Nếu không có userid đi qua, nó hoạt động tốt chỉ cần đi qua mã.

Thanks guys :)

Trả lời

112

Sau đây là cách POST dữ liệu nên được định dạng:

key1=value1&key2=value2&key3=value3 

Trong trường hợp của bạn (chú ý & như một tách):

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

Nhưng jQuery làm cho bạn nếu bạn chỉ định dữ liệu của mình làm đối tượng:

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

Được rồi cảm ơn. Làm thế nào tôi sẽ xác định nó như là một đối tượng? Đây có phải là datatype: json? – JamesG

+0

Không, bạn không cần phải thay đổi 'dataType' của bạn - đó là một gợi ý cho jQuery như thế nào nó sẽ giải thích phản ứng của bạn. Dữ liệu mà nó gửi theo mặc định được tuần tự hóa dưới dạng dữ liệu bài đăng, ví dụ: 'code = 17 & userid = 42'. Bạn chỉ cần thay đổi chuỗi dữ liệu của bạn thành những gì tôi đã viết ở trên và nó sẽ hoạt động. –

+0

Ok điều đó có ý nghĩa ... nhưng tại sao woiuld bạn muốn đặt kiểu dữ liệu của bạn thành JSON? Để đọc bằng JSON cụ thể? – JamesG

13

bạn nên thiết lập của bạn data như vậy:

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

bạn có thể thử này:

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

thay vì

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

Hãy thử mã này ... nó đang làm việc cho tôi ...

<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

thường gửi dữ liệu của bạn như thế này giúp:

data: { code: code, userid: userid } 

điều quan trọng nhất để quên là để xác minh nếu tên của các biến bạn đang gửi đều giống nhau ở phía máy chủ

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> 
Các vấn đề liên quan