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