【问题标题】:AJAX take data from POST with PHPAJAX 使用 PHP 从 POST 中获取数据
【发布时间】:2015-02-22 14:42:39
【问题描述】:

我的脚本有点问题。 我想使用 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 会出现一个警报“成功”,这对我来说意味着没有任何问题。

我知道,我的数据的发布请求丢失了,但这只是一个测试,所以我打算稍后添加...

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

【问题讨论】:

  • 您到底期待什么。 alert succes 表示该请求返回了一个 200 message 表示请求成功,但仅此而已。
  • 是的,我想对你说,这个问题与我的 jquery 代码无关,是吗?
  • 确实,jQuery (javascript) 运行良好。您期望 PHP 文件中的服务器端是什么?
  • 我只想要一个生命信号(回声或重定向,...),所以我可以肯定,存在“连接”更新:php 中的代码有效,但我想在 php 脚本之后回显一些东西,打招呼

标签: javascript php jquery html ajax


【解决方案1】:
$(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);

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 嘿,脚本 (php) 工作正常,但我无法回显某些内容。当我在会话数组中进行更改时,一切都很好,直到我想回显某些东西 - 什么都没有发生(什么都不可见)。
    • 哦好的尝试使用 var_dump()
    【解决方案3】:

    只需像这样从您的 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);
    }
    

    这样你就可以得到你所期望的

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-26
        • 2016-06-30
        • 2023-03-10
        相关资源
        最近更新 更多