如何使用从javascript传递的变量加载PHP页面

时间:2015-11-06 06:21:41

标签: javascript php jquery ajax

我是PHP的新手,我正在尝试解决一些我确信非常基本的问题。我想要做的是在javascript中生成变量并将这些变量传递给PHP页面然后加载和显示。问题是,我似乎能够将POST变量都加载到PHP页面并加载PHP页面但是无法使用我发布的变量加载PHP页面。

以下是我的代码示例: 的index.php

...
<script language="javascript">
      function passToPHP(){
          $.ajax({
              type: "POST",
              url: "/TraceExperiment/TraceExperiment.php",
              data: {
                  varToPass: "foo"
              },
              success: function(){
                 window.location.href="/TraceExperiment/TraceExperiment.php";
              }
          })
      }
  </script>
<input type="button", value="displayPHP", onclick="passToPHP()"></input>

TraceExperiment.php

<?php
  $tempVar = $_POST["varToPass"];
  echo("hello" . $tempVar);
  print_r($_POST);
?>

单击displayPHP时发生的事情是ajax POST成功并且 TraceExperiment.php加载正常(它实际上有一大堆其他html,php等代码加载并显示正常,但为了简单起见我已经排除了)但$ _POST数组似乎是空的。 即,当我尝试回显并打印POST数组和变量时,最终显示的是:

  

注意:未定义的索引:第3行的C:\ xampp \ htdocs \ TraceExperiment \ TraceExperiment.php中的varToPass   helloArray()

任何帮助解决这个问题都将非常感激。最后,我只是在介绍一种使用从javascript文件传递的变量的PHP页面。

4 个答案:

答案 0 :(得分:1)

成功时不要重定向到同一页面。您将在第二次访问该页面时获得未定义的var

function passToPHP() {
    $.ajax({
        type: "POST",
        url: "/TraceExperiment/TraceExperiment.php",
        dataType:text,
        data: {
            varToPass: "foo"
        },
        success: function(data) {
            console.log(data);
        }
    })
}

尝试这样做

如果你想在html中显示消息

success: function(data) {
    $('body').append(data);
} 

答案 1 :(得分:1)

您可以在JavaScript中动态创建表单并提交它,而不是调用ajax并刷新页面:

<script language="javascript">
      function passToPHP(){
          $('<form action="/TraceExperiment/TraceExperiment.php" method="POST"><input type="hidden" name="varToPass" value="foo" /></form>').appendTo('body').submit();
      }
  </script>
<input type="button" value="displayPHP" onclick="passToPHP()"></input>

答案 2 :(得分:1)

这个

有2个解决方案
  • 采用不同的方法

    通过JavaScript生成变量值,然后使用

    写入TraceExperiment.php

                

        function genratenumber(){
          return "number"
        }
          window.location.href= "/TraceExperiment
        /TraceExperiment.php?yourvar="+genratenumber()
         </script>
       <?php     }else{
         // get the value of $_GET['yourvar']
       } ?>
    

比在同一页上使用$ _GET ['yourvar']

获得它
  • 使用你的approch

    你需要将该变量放在会话中(在ajax文件中),而不仅仅是你可以获得该变量

答案 3 :(得分:1)

你可以这样做一个获取请求

 <script language="javascript">
          function passToPHP(){
              var varToPass= "foo"
              window.location = "/TraceExperiment/TraceExperiment.php?varToPass="+varToPass;
      </script>
    <input type="button", value="displayPHP", onclick="passToPHP()"></input>

    <?php
      $tempVar = $_GET["varToPass"];
      echo("hello" . $tempVar);
    ?>

或通过创建简单表单的帖子请求

$('#frm').submit(function(e){
  var varToPass= "foo"
   e.preventDefault();
    $(this).find('#varToPass').val(varToPass);
    $(this).submit();
});

<form id ="frm" method="POST" action="/TraceExperiment/TraceExperiment.php">
  <input type="hidden" id="varToPass"/>
  <input type="submit"/>
</form>