我知道这里有很多类似的问题,但我查了20多个问题,没有解决方案适合我。
问题在于:我将一个ajax post值发送给我的index.php。当我看到Firebug时,值就在那里,但是当我尝试在页面上回显它时,POST是空的。我真的很喜欢这个。
这是我的完整代码:
<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<!-- JQUERY LIBRARY AND SCRIPTS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<a href="index.php">Test</a>
<script type="text/javascript">
$(document).ready(function()
{
$('a').on('click', function()
{
$.ajax({
url: 'index.php',
type: 'POST',
data: {action: 'clicked'},
success: function(data)
{
console.log(data);
alert('Done!');
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
return false;
});
});
</script>
</body>
</html>
答案 0 :(得分:1)
此代码不会尝试将其打印到页面上,而只是在整个HTML文档中添加&#34;单击&#34;字符串,在ajax响应中。如果要在浏览器中显示此内容,则需要将数据打印到页面。如果您在FireBug中检查控制台,您将看到Ajax调用的响应正是我上面所描述的。
现在,如果您想将该值打印回您的网页,我建议您创建一个单独的文件 ajax.php :
<div id="response-results"></div>
并修复index.php以包含要打印该值的元素。即在 元素之后添加$("#response-results").html(data);
。然后更改您的Ajax调用以转到 ajax.php ,而不是index.php。
现在你需要将Ajax响应填充到渲染页面,这可以通过jQuery简单地完成:
chdrive "y:\"
当然,这会进入ajax调用的成功处理程序。
答案 1 :(得分:0)
正如Jay Blanchard
所说
您正在使用AJAX将变量发送到已在浏览器上呈现的页面。这将永远不会起作用,因为你从变量获取的PHP已经在服务器端运行并通过AJAX返回,而不是在你当前正在查看的页面中。
试试这个会起作用:
index.php:
<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
main.html:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<!-- JQUERY LIBRARY AND SCRIPTS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<a href="#123">Test</a>
<div id="result"></div>
<script type="text/javascript">
$(document).ready(function()
{
$('a').on('click', function()
{
$.ajax({
url: 'index.php',
type: 'POST',
data: {action: 'clicked'},
success: function(data)
{
// console.log(data);
$("#result").html(data);
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
return false;
});
});
</script>
</body>
</html>
答案 2 :(得分:0)
正如R J评论的那样,不可能做我想做的事。
之所以发生这种情况,是因为一旦我的页面被加载,顶级的PHP脚本就被占用了,但我的POST上什么也没有。
在我调用Ajax之后,页面再次呈现,但顶级PHP脚本将无法获取,因为它的 SERVER SIDE 。事实证明我甚至可以在页面上打印出我的Ajax数据,但PHP $ _POST永远不会得到它的价值。
谢谢你们。