如何将jquery变量值传递给php变量?

时间:2015-05-07 13:24:25

标签: javascript php jquery ajax

这是我的javascript。我想使用ajax在同一页面中获取jquery变量值到php变量。我以前打印php变量,但有一个错误。如果有人能帮助我,我将非常感激。

<script type="text/javascript">  
$(document).ready(function() {
    $('#roomOptions #select1').change(function() {
        var total = 0;
        $('#roomOptions #select1').each(function() {
            total+=parseInt($(this).val());    
        });
        $('#roomOptions #roomOptions_total').html(total);
        });         

    $('#roomOptions #select2').change(function() {
        var total1 = 0;
        $('#roomOptions #select2').each(function() {
            total1+=parseInt($(this).val());    
        });
        $('#roomOptions #roomOptions_total1').html(total1);
    });
});

$.ajax({
    type: "POST",
    url: "getrooms.php",
    data:{ total: total }, 
    success: function(data){
        console.log(data); 
    }
})
</script>

5 个答案:

答案 0 :(得分:0)

你应该像这样添加PHP:

<?php
$total = $_POST['total']  ;
echo $total;

?>

答案 1 :(得分:0)

根据问题作者的评论添加修改。

由于您使用相同的页面使用jquery发布数据,因此您应该刷新页面。为ajax调用(javascript部分)修改这样的代码。

$.post(window.location, {title: title}, success: function(data) {
  //do something here
});

并将其添加到页面代码的顶部。

 <?php
  if(isset($_POST['total'])) {
  echo $_POST['total'];
  }
 ?>

答案 2 :(得分:0)

顺便说一句,您的total变量只能通过更改方法匿名回调函数来访问! <{1}}将在你的ajax电话中total

undefined

答案 3 :(得分:0)

你应该在函数之前在javascript中声明你的'total'变量。

var total = 0;
$('#roomOptions #select1').change(function () {
    total = 0;
    $('#roomOptions #select1').each(function () {
        total += parseInt($(this).val());
    });
    $('#roomOptions #roomOptions_total').html(total);
});

或者在ajax init之前得到它

  <script> 
    total = $("#roomOptions #roomOptions_total").html();
    $.ajax({
        type: "POST",
        url: "getrooms.php",
        data:{ total: total }, 
        success: function(data){
            console.log(data); 
        }
    })
    </script>

您可以访问php中的var

<?php echo $_POST['total']; ?>

你可以在ajax发送之前看到内部的内容

 <script> 
        total = $("#roomOptions #roomOptions_total").html();
        $.ajax({
            type: "POST",
            url: "getrooms.php",
            data: { total: total }, 
            success: function(data){
                console.log(data); 
            },
beforeSend: function() {
     console.log(total); 
  }
        })
        </script>

答案 4 :(得分:0)

我认为问题在于你的代码序列。 ajax调用是在调用document.ready之前进行的。如果你把它转换成这样的东西,那么它可能会起作用

<script type="text/javascript">  
$(document).ready(function() {
     var total = 0;
    $('#roomOptions #select1').change(function() {
         total = 0;
        $('#roomOptions #select1').each(function() {
            total+=parseInt($(this).val());    
        });
        $('#roomOptions #roomOptions_total').html(total);
        });         

    $('#roomOptions #select2').change(function() {
        var total1 = 0;
        $('#roomOptions #select2').each(function() {
            total1+=parseInt($(this).val());    
        });
        $('#roomOptions #roomOptions_total1').html(total1);
    });


$.ajax({
    type: "POST",
    url: "getrooms.php",
    data:{ total: total }, 
    success: function(data){
        console.log(data); 
    }
})
});
</script>