如何使用 jQuery 将多个变量传递给 PHP

Posted

技术标签:

【中文标题】如何使用 jQuery 将多个变量传递给 PHP【英文标题】:How to pass multiple variables to PHP with jQuery 【发布时间】:2015-04-12 01:22:54 【问题描述】:

好吧,伙计们希望你们也能帮助我解决这个问题。我对 jQuery 和 AJAX 的知识并不疯狂,可能我错过了一些非常简单的东西。我无法传递超过 1 个变量。我已经尝试了几种不同的方法,其中最接近我工作的是this,但即使这样也没有用。

jQuery

$("#bodymes ul li span[contenteditable=true]").blur(function()
            var weight_id = $(this).attr("id") ;
            var weightbody_mes = $(this).text() ;
            $.post( "../includes/bodymes_weight.php",  weightbodymes: weightbody_mes )  
                .done(function( data )    
                    $(".weightsuccess").slideDown(200); 
                    $(".weightsuccess").html("Weight Updated successfully"); 
                    if ($('.weightsuccess').length > 0) 
                        window.setTimeout(function()
                            $('.weightsuccess').slideUp(200);
                        , 4000);
                      
                    // alert( "Data Loaded: " + data);
            );
        );

所以基本上如果我运行它,它会工作得很好,我的 PHP 脚本会处理它。请注意,当我去提醒我并显示加载的数据时,它会显示正确的信息(来自weightbodymes 的信息)并且我能够更新 db.但是,一旦我添加另一个变量 weightbodymes: weightbody_mes, weightid: weight_id ,它就不会显示在警报框中加载的数据(如果我尝试显示来自这两个变量的信息它正在工作,但它只向 PHP 提交一个变量是:

    $weightid = $_POST['weightid'];
    $weight = $_POST['weightbodymes'];

    if ($insert_stmt = $mysqli->prepare("UPDATE body SET body_weight=? WHERE body_id='$weightid'")) 
            $insert_stmt->bind_param('s', $weight);
            // Execute the prepared query.
            if (! $insert_stmt->execute()) 
                header('Location: ../index.php?error=Registration failure: INSERT nwprogram1');
            
    

希望你能告诉我我在哪里犯了错误以及如何纠正它。 提前谢谢您!

【问题讨论】:

data 对象添加更多属性: weightbodymes: weightbody_mes, weightid: weight_id, foo: 'bar' 发送类似'data':'var_1': 'value1', 'var_2' : 'value2'的内容。然后通过$_POST['data']['var_1'], $_POST['data']['var_2']访问它 这应该有你想要的***.com/questions/8191124/… 我尝试了第一个和第三个答案,但似乎不起作用。生病再试几次。谢谢! 【参考方案1】:

使用 JS/JQUERY 发布 AJAX 请求。以下是我用于所有 AJAX 调用的语法。

var first = 'something';
var second = 'second';
var third = $("#some_input_on_your_page").val();


///////// AJAX //////// AJAX //////////
    $.ajax(
        type: 'POST',
        url:  'page_that_receives_post_variables.php',
        data: first:first, second:second, third:third,
        success: function( response )
            alert('yay ajax is done.');
            $('#edit_box').html(response);//this is where you populate your response
        //close succss params
    );//close ajax
///////// AJAX //////// AJAX //////////

PHP 页面 page_that_receives_post_variables.php 的代码

<?php
$first = $_POST['first'];
$second = $_POST['second'];
$third = $_POST['third'];

echo 'now do something with the posted items.';
echo $first; //etc...
?>

【讨论】:

嗯...这似乎是一个解决方案,但由于某种原因它不起作用,它仍然只传递一个变量。因此,例如,在响应中我只得到weightbodymes 虽然我传递了两个变量,但我的数据行看起来像这样:data: weightid:weight_id, weightbodymes:weightbody_mes, third:third,(我也留下了第三个元素并分配了变量,但没有尝试用 PHP 调用它)。还有其他建议吗? 我让它与您的解决方案一起使用。也投了赞成票。谢谢! @斯蒂芬卡尔 出了什么问题?对于调试,在您过去在 ajax 中发布变量之前,只需 alert(your_variables) 这样您就可以查看您是否真的得到了一些东西。通常会帮助我。 我使用了 alert() 并给了我正确的信息,但问题在于 PHP,因为我有 if 语句,我在这个问题中发布的部分是“else”的一部分,并且在 if 和 else 中我都放置了当我尝试不同的解决方案并忘记更改它时,相同的变量会导致更新错误的记录和一大堆其他混乱。再次感谢你! @斯蒂芬卡尔

以上是关于如何使用 jQuery 将多个变量传递给 PHP的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 POST 方法将 javascript/jQuery 变量传递给 PHP [重复]

将PHP变量传递给jQuery函数

如何将多个选定的(通过复选框)行 ID 传递给 jQuery 中的 php 脚本?

将 PHP 数组传递给外部 jQuery $.ajax

如何使用 Javascript 和 Ajax 将 HTML 单选按钮值传递给 PHP 变量?

如何从 Blade 格式 HTML 将 PHP 变量传递给 JavaScript 函数