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

Javascript 如何使用jQuery将多个变量传递给PHP,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,好的,伙计们,希望你们也能帮我解决这个问题。我对jQuery和AJAX没有太多的了解,可能我遗漏了一些非常简单的东西。我无法传递超过1个变量。我试过几种不同的方法,其中最接近我的工作是,但即使这样也不起作用 jQuery $("#bodymes ul li span[contenteditable=true]").blur(function(){ var weight_id = $(this).attr("id") ; var weightbody

好的,伙计们,希望你们也能帮我解决这个问题。我对jQuery和AJAX没有太多的了解,可能我遗漏了一些非常简单的东西。我无法传递超过1个变量。我试过几种不同的方法,其中最接近我的工作是,但即使这样也不起作用

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
),并且我能够更新数据库。但只要我添加另一个变量
{weightbodymes:weightbodymes,weightid:weightid\u 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');
            }
    }
希望你能告诉我哪里出了错,以及如何改正。
提前谢谢!

使用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页面的代码。PHP

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

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


数据添加更多属性
对象:
{weightbodymes:weightbodymes,weightid:weightbodid,foo:'bar'}
发送类似以下内容
{'data':{'var\u 1':'value1','var\u 2':'value2'}
。然后通过
$\u POST['data'['var\u 1'],$\u POST['data'['var\u 2']
这应该是您想要的答案,我尝试了第一个和第三个答案,但似乎不起作用。我会再尝试几次。谢谢!嗯……这似乎是一个解决方案,但由于某种原因它不起作用,它仍然只传递一个变量。因此,例如,在一个响应中,我只获得了
权重体mes
,尽管我通过了我的数据行中的两个变量如下:
data:{weightid:weight\u id,weightbodymes:weightbody\u mes,third:third},
(我离开了第三个元素并分配了变量,但没有尝试用PHP调用它)。还有其他建议吗?我是为了配合你的解决方案而提出的。我也投了赞成票。谢谢!@Stephen Carr问题是什么?为了调试,在你在ajax中使用post变量之前,只需提醒(你的_变量),这样你就可以看到你是否真的得到了什么。通常对我有帮助。我使用了alert()并给了我正确的信息,但问题是PHP,因为我有if语句,我在这个问题中发布的部分是“else”的一部分,在if和else中,当我尝试不同的解决方案时,我放置了相同的变量,但忘了更改它,所以它导致错误的记录更新和一大堆其他混乱。再次感谢!@Stephen Carr