如果$ _POST出现在一个字符串中,它们如何接收多个参数?

时间:2014-07-16 14:03:42

标签: php jquery ajax post

我试图在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

4 个答案:

答案 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输出到控制台?