我一直在为这个问题绞尽脑汁,我一定在这里搜索了50多个其他问题,但都没有结果。我正在尝试使用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中的表单中提取数据时,这将非常有效。
谢谢你的帮助,如果这是一个非常简单的问题,我提前道歉。我正在努力学习尽可能好的网络开发。我觉得我已经尝试了所有的方法,直到使用更长的.ajax方式发送POST变量,而不是使用.POST().
这是您的答案,您将测试是否存在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>
您的PHP代码在触发ajax请求之前运行,因为在您在浏览器中看到结果HTML之前,服务器会解释并运行PHP
您需要的是在ajax请求对象中添加一个success
回调,它将获得ajax请求的结果,并对其执行一些有用的操作,例如将其放入<div>
元素中。下面的例子简单地显示它
$.ajax({
type: "POST",
url: "index.php",
data: {'name': "name1"},
success: function(serverReponse){ alert(serverResponse) }
});