我知道这里有很多类似的问题,但我查阅了 20 多个问题,但没有一个解决方案适合我。
问题是:我正在向我的index.php 发送一个ajax post 值。当我查看 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>
最佳答案
此代码不会尝试将其打印到页面,而只是在 ajax 响应中在整个 HTML 文档前面添加一个“clicked”字符串。如果您想在浏览器中显示此内容,则需要将该数据打印到页面。如果您检查 FireBug 中的控制台,您将看到 Ajax 调用的响应正是我上面所描述的。
现在,如果您想将该值打印回您的页面,这是我的建议,您创建一个单独的文件,ajax.php:
<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
并修复你的index.php以包含一些你要打印该值的元素。 IE。添加<div id="response-results"></div>
就在您的 元素之后。然后更改您的 Ajax 调用以转到 ajax.php,而不是 index.php。
现在您需要将 Ajax 响应填充到呈现的页面,这可以简单地使用 jQuery 完成,如下所示:
$("#response-results").html(data);
当然,这会进入 ajax 调用的成功处理程序。
关于javascript - 无法获取 AJAX 发送的 php POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36428726/