AJAX使用PHP从POST获取数据

AJAX take data from POST with PHP

本文关键字:获取 数据 POST 使用 PHP AJAX      更新时间:2024-03-19

我的脚本有点问题。我想用AJAX(POST)将数据提供给一个php文件。

我没有收到任何错误,但是php文件在AJAX"运行"它之后没有显示任何更改。这是我的jquery/js代码:(#changeRank是一个选择框,我想传递所选的值)

$(function(){
$("#changeRank").change(function() {
    var rankId = this.value;
    //alert(rankId);
    //$.ajax({url: "/profile/parts/changeRank.php", type: "post", data: {"mapza": mapza}});
    //$("body").load("/lib/tools/popups/content/ban.php");
    $.ajax({
    type: "POST",
    async: true,
    url: '/profile/parts/changeRank.php',
    data:  { 'direction': 'up' },
    success: function (msg) 
            { alert('success') },
    error: function (err)
    { alert(err.responseText)}
    });
});
});

PHP:

require_once('head.php');
require_once('../../lib/permissions.php');
session_start();
$user = "test";
if($_SESSION["user"] != $user && checkPermission("staff.fakeLogin", $_SESSION["user"], $mhost, $muser, $mpass, $mdb))
$_SESSION["user"] = $user;
header('Location:/user/'.$user);
die();

当我运行脚本时,javascript会显示一个警报"success",这对我来说意味着没有任何问题。

我知道,对我的数据的帖子请求丢失了,但这只是一个测试,所以我计划稍后添加这个。。。

我希望你能帮助我,问候语:)

$(function(){
$("#changeRank").change(function() {
    var rankId = this.value;
    //alert(rankId);
    //$.ajax({url: "/profile/parts/changeRank.php", type: "post", data: {"mapza": mapza}});
    //$("body").load("/lib/tools/popups/content/ban.php");
    $.ajax({
    type: "POST",
    async: true,
    url: '/profile/parts/changeRank.php',
    data:  { 'direction': 'up' },
    success: function (msg) 
            { alert('success: ' + JSON.stringify(msg)) },
    error: function (err)
    { alert(err.responseText)}
    });
});
});

require_once('head.php');
require_once('../../lib/permissions.php');
session_start();
$user = "test";
if($_SESSION["user"] != $user && checkPermission("staff.fakeLogin", $_SESSION["user"], $mhost, $muser, $mpass, $mdb))
$_SESSION["user"] = $user;
echo json_encode($user);

此示例代码将允许将用户名回显到页面。警报应该显示这一点。

好吧,你的js很好,但因为你实际上没有在php脚本中回显任何东西,所以除了成功警报之外,你不会看到任何变化。也许var_dump您的post变量来检查您的数据是否正确地从js文件传递。。。

只需像一样从php返回01

您的PHP:

if($_SESSION["user"] != $user && checkPermission("staff.fakeLogin", $_SESSION["user"], $mhost, $muser, $mpass, $mdb))
{
$_SESSION["user"] = $user;
echo '1'; // success case
}
else
{
echo '0'; // failure case
}

然后在你的脚本

success: function (msg) 
if(msg==1)
{
window.location = "home.php"; // or your success action
}
else
{
alert('error);
}

这样您就可以得到您期望的

如果你想在当前页面中使用PHP中的数据来查看结果,那么你需要做两件事:

  1. 实际上是从PHP发送一些。您当前的PHP重定向到另一个可能发送数据的URL。您可以使用它,或者删除Location标头和echo某些内容
  2. 编写一些JavaScript来处理这些数据。数据将被放入成功函数的第一个参数中(您已将其命名为msg)。如果您希望数据显示在页面中,则必须将其放在页面中的某个位置(例如,使用$('body').text(msg)