麻烦将一个变量从javascript页面传递到php页面

时间:2015-12-14 11:20:33

标签: javascript php jquery

我想通过JavaScript页面从一个php页面发送一个字符串到另一个页面。 只需按一下按钮即可发送字符串。的名字 按钮在每次显示时都会更改,按钮的名称是 通过发送的那个。问题是,它没有显示出来 下一个php页面,但alert()函数根据需要输出字符串。什么 代码有问题吗?

这是第一页中的php代码

echo "<form method = 'post' action = 'passer.php'>
          <input type = 'submit' value = 'play' name = '$ball'></input>
      </form>";

这里是javascript代码

$(':input').click(function(){

    var cat = $(this).attr("name");
    alert(cat);
    console.log(cat);

    $.post("studSport.php",{input: cat}, function(data){
    });
});

下一页的php代码     {        $ receiver =&#34;&#34;;

   if(isset($_POST['input'])){
       $receiver = $_POST['input'];
       echo $receiver;
   } else{
       echo " it is empty";
   }
}

输出总是&#34;它是空的&#34;即使alert()显示正确的变量。代码有什么问题,为什么不显示$ receiver?

1 个答案:

答案 0 :(得分:2)

您的Ajax请求永远不会运行。当您单击输入时触发它...但输入是一个提交按钮,因此Ajax请求被取消,表单提交,并加载一个新页面。

由于您的表单没有名为input的输入,因此您始终无法通过测试if(isset($_POST['input']))。 (被取消的Ajax请求输入input,但您从未提出该请求。)

要停止提交表单,您需要捕获事件对象并防止事件通常会触发的默认行为。

$(':input').click(function(evt){
    evt.preventDefault();

但请注意,您的成功处理函数:

function(data){
}

...什么都不做,所以在没有使用浏览器的开发者工具检查HTTP响应的情况下,您无法查看结果。

您的目标可能不是使用Ajax,而是加载新页面 - 只需使用表单中的其他数据。

为此,您需要修改表单中的控件。

$(':input').click(function(){
    var cat = $(this).attr("name");
    alert(cat);
    $(this).append(
        $("<input type='hidden' name='input'/>").val(cat)
    });
});

但是,如果您只想告诉按下哪个提交按钮,那么根本不涉及JavaScript 。只需使用具有所需名称和值的提交按钮。

<form method='post' action='passer.php'>
  <button name="input" value="<? echo htmlspecialchars($ball); ?>'>
    play
  </button>
</form>