我试图在JQuery,PHP和MySQL中使用Ajax调用。
我需要发送两个变量:$speaker_id
和$article_id
。
我像这样构建我的jQuery:
$('.ajax-call').click(function() {
var speakerID = <?=$speaker_id?>;
var articleID = $(this).attr('id');
var ajaxData = 'speaker_id=' + speakerID + ', article_id=' + articleID;
$.ajax({
type: 'POST',
url: 'update-read-article.php',
data: ajaxData,
dataType: 'text'
});
});
但是,请查看Chrome的开发者工具&#34;网络&#34;选项卡完成后,我会看到update-read-article.php
收到的表单数据如下所示:
speaker_id: 16551, article_id
而不是预期的:
speaker_id: 16551
article_id: 29
如何构建我的ajaxData
以便我的脚本可以找到$_POST['speaker_id']
和$_POST['article_id
?
答案 0 :(得分:4)
Querystring值必须用和号(&
)分隔,而不是逗号(&
后面没有空格):
var ajaxData = 'speaker_id=' + speakerID + '&article_id=' + articleID;
答案 1 :(得分:2)
您必须将每个参数与&#34;&amp;&#34;分开。逗号或其他角色不会工作,所以删除它们。
您的查询字符串应如下所示:
var ajaxData = 'speaker_id=' + speakerID + '&article_id=' + articleID;
答案 2 :(得分:1)
您的ajaxData
可能与查询字符串的定义方式相同,但请求类型POST
会将其转换为 post 参数。
像这样:
$('.ajax-call').click(function() {
$.ajax({
type: 'POST',
url: 'update-read-article.php',
data: 'speaker_id=<?=$speaker_id?>&article_id=' + $(this).attr('id'),
dataType: 'text'
});
});
注意&符号(&
)分隔参数 - 与查询字符串(GET)中的方式相同。
或者您可以将该数据定义为对象:
$('.ajax-call').click(function() {
$.ajax({
type: 'POST',
url: 'update-read-article.php',
data: {
'speaker_id': <?=$speaker_id?>,
'article_id': $(this).attr('id')
},
dataType: 'text'
});
});
答案 3 :(得分:1)
使用jQuery $.param({speaker_id: yourval, article_id: yourval})
。你不会对手动构建字符串感到困惑。
您是否尝试将ajaxData
输出到控制台?