我一直在解决这个问题,我必须在这里搜索其他五十多个问题,但无济于事。我正在尝试使用PHP,MariaDB,jQuery和其他Web开发技术对网站进行编码,但是我遇到了尝试将变量从客户端(使用jQuery)发布到服务器端(PHP)的问题。我创建了一个非常简单的文件,只是为了找出我遇到的问题:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
<script type="text/javascript" src="jquery.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function()
{
$.ajax({
type: "POST",
url: "index.php",
data: {'name': "name1"},
});
});
</script>
<body>
<?php
if(isset($_POST["name"])){
$i=$_POST["name"];
echo "num: ".$i;
}
else{
echo "No information supplied";
}
?>
</body>
</html>
我刷新页面,并不断收到“无信息提供”的失败消息。我知道POST被发送到浏览器,因为我可以在Firebug中看到它,它的状态代码是200 OK,所以我知道我必须正确地做一些事情。我的PHP语法搞砸了吗?我知道当我从常规HTML中嵌入的表单中提取数据时,这将工作得很好。
感谢您的协助,如果这是一个非常简单的问题,我会提前道歉。我正在努力学习Web开发。我觉得我已经尝试了一切,使用更长的.ajax发送POST变量的方式,而不是使用.post()。
答案 0 :(得分:2)
这是您的答案,您将测试是否有ajax请求,如果是,请处理它,如果没有吐出您的原始页面。至于ajax调用,我们正在添加一个成功的回调,然后用你的返回更新你的body标签。数据
<?php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
if(isset($_POST["name"])){
$i=$_POST["name"];
echo "num: ".$i;
}
else{
echo "No information supplied";
}
die;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
<script type="text/javascript" src="jquery.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function()
{
$.ajax({
type: "POST",
url: "index.php",
data: {'name': "name1"},
success: function(data){
$('body').html(data);
}
});
});
</script>
<body>
this is the original body content
</body>
</html>
答案 1 :(得分:0)
您的PHP代码在触发ajax请求之前运行,因为服务器在您在浏览器中查看生成的HTML之前解释并运行PHP
你需要的是在ajax请求对象中添加一个success
回调,它将获得ajax请求的结果,并对它做一些有用的事情,例如将它放入<div>
元素。以下示例只显示
$.ajax({
type: "POST",
url: "index.php",
data: {'name': "name1"},
success: function(serverReponse){ alert(serverResponse) }
});