使用 jQuery AJAX 发送多个数据参数

Posted

技术标签:

【中文标题】使用 jQuery AJAX 发送多个数据参数【英文标题】:Sending multiple data parameters with jQuery AJAX 【发布时间】:2012-03-08 21:09:57 【问题描述】:

我正在向 php 文件发送一个 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);      
      
  )


这是在提交时调用函数发送的,如下所示:

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

问题是用户 id php 变量没有被 ajax 发送到 check_code.php 页面。或者至少我似乎无法将 id 回显到页面。

这是将多个值传递到服务器端页面的正确方法吗?如果没有传递用户 ID,只需传递代码就可以正常工作。

谢谢大家:)

【问题讨论】:

【参考方案1】:

Linus Gustav Larsson Thiel 的回答提到,我使用了以下 &.ajax() ,它在单击按钮时触发并且效果很好。我可以传递日、月和年参数。

$('#convertbtn').on('click',function()
ageddajax = $("#agedd").val();
agedmmajax = $("#agemm").val();
ageyyyyajax = $("#ageyyyy").val();
    if(ageddajax > 0 && agemmajax > 0 && ageyyyyajax >0)
    $.ajax(
        type:'POST',
        url:'ajaxDataAge.php',
        data:'agedd_id='+ageddajax +'&agemm_id='+agemmajax +'&ageyyyy_id='+ageyyyyajax,
            success:function(html)
            $('#cydivage').html(html);
            
        );
       
);

【讨论】:

【参考方案2】:
 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>

【讨论】:

【参考方案3】:

通常这样发送您的数据会有所帮助:

data:  code: code, userid: userid 

最重要的是不要忘记验证您发送的变量的名称在服务器端是否相同

【讨论】:

【参考方案4】:

试试这个代码……它对我有用……

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

【讨论】:

【参考方案5】:

POST 数据的格式如下:

key1=value1&key2=value2&key3=value3

在你的情况下(注意&amp; 作为分隔符):

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

但是,如果您将数据指定为对象,那么 jQuery 会为您做到这一点:

data:  code: code, userid: userid 

【讨论】:

好的,谢谢。我如何将其指定为对象?这会是数据类型:json 吗? 不,您不需要更改您的dataType - 这是对 jQuery 的提示,它应该如何解释您的响应。它发送的数据默认序列化为发布数据,例如code=17&amp;userid=42。你只需要把你的数据字符串改成我上面写的就行了。 好吧,这是有道理的......但你为什么要将你的 dataType 设置为 JSON 呢?要专门读取 JSON? 通常你不需要指定dataType,jQuery 会根据响应头等来计算它。如果它不能,并且你希望它接收例如JSON 回来了,这很有意义。见jQuery.ajax documentation。 我喜欢对象方法,因为它更容易阅读并且看起来很干净。【参考方案6】:

你可以试试这个:

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

而不是

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

【讨论】:

【参考方案7】:

你应该像这样设置你的data

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

【讨论】:

以上是关于使用 jQuery AJAX 发送多个数据参数的主要内容,如果未能解决你的问题,请参考以下文章

jq AJAX拦截器

使用来自 jquery 数据表的 ajax 调用发送参数

jq的$.when().done()的使用, 同时调用多个ajax 渲染到页面html上

通过 jQuery ajax() 向 PHP 发送多个复选框数据

jQuery从零开始-----ajax

javascript jquery Ajax在请求正文或查询参数中发送数据