将变量从javascript页面传递到php页面时出现问题


Trouble passing a variable from javascript page to php page

我想通过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=";

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

即使alert()显示了正确的变量,输出也总是"it is empty"。代码出了什么问题,为什么不显示$receiver?

您的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>