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