使用 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
在你的情况下(注意&
作为分隔符):
'code=' + code + '&userid=' + userid
但是,如果您将数据指定为对象,那么 jQuery 会为您做到这一点:
data: code: code, userid: userid
【讨论】:
好的,谢谢。我如何将其指定为对象?这会是数据类型:json 吗? 不,您不需要更改您的dataType
- 这是对 jQuery 的提示,它应该如何解释您的响应。它发送的数据默认序列化为发布数据,例如code=17&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的$.when().done()的使用, 同时调用多个ajax 渲染到页面html上