我想简单地从javascript到php获取一个变量,但是php并没有收到我的变量 - 而是收到了整个页面代码。
这是我的测试页:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#button").click(function() {
var test = "Hallo Welt";
$.ajax({
url: "ajax.php",
type: "post",
data: {
test: test
},
success: function (response) {
alert(response);
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus, errorThrown);
}
});
});
});
</script>
</head>
<body>
<form>
<input type="button" id="button" value="Test" style="width:200x">
</form>
<?php
if(isset($_POST["test"])) {
echo $_POST["test"];
}
?>
</body>
</html>
有人有提示吗?
问候
答案 0 :(得分:1)
第一,最好在分离的文件中使用你的PHP代码
第二,如果你想在同一个文件中使用它,就像你在这里一样,你的代码应该是
第3次使用form.on('submit')而不是提交按钮点击
第4次不要忘记添加(e)和e.preventDefault();或者返回false
<?php
if(isset($_POST["test"])) {
echo $_POST["test"];
}else{
?>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("form").on('submit',function(e) {
e.preventDefault();
var test = "Hallo Welt";
$.ajax({
url: "ajax.php",
type: "post",
data: {
test: test
},
success: function (response) {
alert(response);
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus, errorThrown);
}
});
});
});
</script>
</head>
<body>
<form>
<input type="button" id="button" value="Test" style="width:200x">
</form>
</body>
</html>
<?php } ?>
答案 1 :(得分:1)
我认为首先需要使用单独的php文件,然后在php echo 行之后添加 exit; ,
<?php
if(isset($_POST["test"])) {
echo $_POST["test"];
exit;
}
?>
检查并告知我是否遗漏了任何内容。
感谢。
答案 2 :(得分:1)
您不需要有一个单独的PHP文件来处理AJAX请求,尽管这样做会带来好处。如果你有一个单独的文件,比如叫做'data.php',你可以用这样的方式设置那个脚本,这样它就可以处理许多不同的请求 - 每次调用你的ajax函数时,url都是一样的({ {1}})但请求中发送的参数会发生变化。
以下data.php
语句仅在exit
次请求时遇到,并阻止将html的其余部分发送回您的javascript回调函数。
POST