【发布时间】:2019-01-19 08:06:50
【问题描述】:
我有一个 PHP 文件 test.php,它有一个简单的链接,单击该链接后,会调用 AJAX 函数将数据作为 POST 参数发送到另一个文件 testPHP.php。然后第二个文件接收来自 AJAX 调用的 POST 参数,然后警告 $_POST 数组中的内容。我面临的问题是,在第二个文件中,$_POST 数组是空的(我使用 print_r($_POST) 进行了检查),所以我认为数据没有通过。 这是 2 个文件:
test.php
<a id="link" role="button" href="testPHP.php">Test</a>
<script type="text/javascript">
$("#link").click(function(e) {
e.preventDefault();
alert('function entered');
$.ajax({
url: "testPHP.php",
type: "POST",
data: {
parameter1: 'test',
parameter2: 'test2'},
success: function(msg) {
alert('wow' + msg);
}
});
alert('function end');
document.getElementById('#link').setAttribute('href','testPHP.php');
});
testPHP.php
if(isset($_GET))
{
echo "<script>alert('GET is there');</script>";
print_r($_GET);
}
if(isset($_POST))
{
echo "<script>alert('POST is there')</script>";
print_r($_POST);
}
if(isset($_POST['parameter1']))
{
echo "<script>alert('$_POST is set')</script>";
header('Location: HomePage.php');
}
else
{
echo "<script>alert('No post variable set')</script>";
}
到目前为止,我尝试的是在成功执行 AJAX 调用时发送 SUCCESS 消息,它确实会提醒我 Success 消息。我还检查了第二个文件中 $_POST 数组的内容,以查看我是否以 POST 请求以外的格式接收数据(例如可能必须分解才能获取内容的字符串),但是$_POST 数组为空。 这是我重定向到第二页时得到的输出: 数组()数组() $_POST 和 $_GET(用于测试目的)数组为空。
我也浏览了 AJAX 文档,但无法让这个简单的 POST 数据传输工作。有人可以帮我解决这个问题,以便我了解如何正确发送 POST 参数并将数据接收到 $_POST['parameter1'] 和 $_POST['parameter2'] 字符串中,以便我可以进一步处理数据。
注意:我已经使用了 FORM 的 POST 方法,它使用隐藏的表单元素并且效果很好,但我想尝试这种方法以更好地了解 AJAX 的工作原理。
【问题讨论】:
-
将
console.log(msg);放入您的成功函数中,然后使用浏览器的控制台查看数据。它说什么? -
console.log(msg) 显示同一文件夹中其他 PHP 文件的完整代码。这里复制太长了,但是代码开头是这样 ...... .........
-
我认为您在查看检查器而不是控制台查找控制台选项卡
-
恐怕是控制台显示的内容。为了确认,我还在success函数中在msg旁边打印了“Test”,并在整个代码之后显示了“Test”。
-
听起来不太对劲……你用的是什么浏览器
标签: javascript php ajax