【问题标题】:JQuery $.post, PHP returns blank POST variablesJQuery $.post, PHP 返回空白 POST 变量
【发布时间】:2013-08-03 04:34:18
【问题描述】:

我似乎无法让它工作。我整天都在研究 Stack overflow 和 JQuery doc 网站本身,无论我做什么,我似乎都无法让它工作。

这是 HTML 表单(以及用于 JQuery post 函数的 javascript):

<script>
function checkForm(){
// variable to hold request
var request;
// bind to the submit event of our form
$("#rchar").submit(function(event){
    // abort any pending request
    if (request) {
        request.abort();
    }
    // setup some local variables
    var $form = $(this);
    // let's select and cache all the fields
    var $inputs = $form.find("input, select, button, textarea");
    // serialize the data in the form
    var serializedData = $form.serialize();

    // fire off the request to /form.php
    request = $.ajax({
    url: 'postregister.php',
    type: "POST",
    data: serializedData,
    success: function(result){
        console.log(result);
    },
    error: function(){
        console.log('error');
    }   
});

    // callback handler that will be called on success
    request.done(function (response, textStatus, jqXHR){
    $("#navigation").html(serializedData);
    });

    // callback handler that will be called on failure
    request.fail(function (jqXHR, textStatus, errorThrown){
        // log the error to the console
        console.error(
            "The following error occured: "+
            textStatus, errorThrown
        );
    });

    // prevent default posting of form
    event.preventDefault();
});
}
</script>
<form id="rchar" method="POST" action="postrenamecharacter.php">
<h3>Test Form!</h3>
<table id="leftalignment1">
<tbody>
<tr><td>Name: </td><td><input type="text" size="35px" id="name" value="" placeholder="Name" name="name"><input type="hidden" value="Test" id="hidden" name="hidden"></td></tr>
<tr><td>Password:</td><td><input type="password" size="35px" placeholder="Password" id="password" name="password"></td><td></td></tr>
</tbody>
</table><br><br>
<input action="submit" value="  Register  " id="submit" type="submit"><br>
</form>

因此响应将被发布到 Java 终端中,JQuery POST 变量将被加载到导航栏中。通过阅读以下内容,导航栏具有正确的变量:

"name=Jeremy&amp;hidden=Test&amp;password=thisisatest"

这里是名为“postregister.php”的 PHP 函数

<?php
$oldname = $mysqli->real_escape_string($_POST['hidden']);
$password = $mysqli->real_escape_string($_POST['password']);
$title = "Your password is: ";
echo $title . "<br>" . $password . "<br>Your old name was: <br>" . $oldname;
?>

问题是 PHP 代码只返回这个:

"Your password is: <br><br>Your old name was: <br>"

很明显,PHP 变量并没有从 JQuery 传递到 PHP POST 表单。有帮助吗?我真的,真的很感激!

谢谢^_^

【问题讨论】:

  • print_r($_POST) 的输出是什么?
  • @AmalMurali 数组 ()
  • 您的文件中是否建立了$mysqli 连接?
  • @YogeshSuthar 是的,我刚刚从文件中删除了它以供显示。
  • @user2635579 您正在使用 ajax 调用postrenamecharacter.php 并显示postregister.php 的代码。是错字吗?

标签: php javascript jquery post .post


【解决方案1】:

您甚至没有调用函数 checkForm() 方法,所以我不确定您的代码是如何工作的,但我使用了 $(document).ready(function()

以下是脚本:

$(document).ready(function() {
    $("#rchar").submit(function(event){
        alert("hahahaha");
        var request;
        // abort any pending request
        if (request) {
            request.abort();
        }
        // setup some local variables
        var $form = $(this);
        // let's select and cache all the fields
        var $inputs = $form.find("input, select, button, textarea");
        // serialize the data in the form
        var serializedData = $form.serialize();

        // fire off the request to /form.php
        request = $.ajax({
        url: 'postregister.php',
        type: "POST",
        data: serializedData,
        success: function(result){
            console.log(result);
        },
        error: function(){
            console.log('error');
        }   
    });

        // callback handler that will be called on success
        request.done(function (response, textStatus, jqXHR){
        $("#navigation").html(serializedData);
        });

        // callback handler that will be called on failure
        request.fail(function (jqXHR, textStatus, errorThrown){
            // log the error to the console
            console.error(
                "The following error occured: "+
                textStatus, errorThrown
            );
        });

        // prevent default posting of form
        event.preventDefault();
    });
});


以下是html:

 <body>
    <form id="rchar" method="POST" action="postregister.php">
    <h3>Test Form!</h3>
    <table id="leftalignment1">
    <tbody>
    <tr><td>Name: </td><td><input type="text" size="35px" id="name" value="" placeholder="Name" name="name"><input type="hidden" value="Test" id="hidden" name="hidden"></td></tr>
    <tr><td>Password:</td><td><input type="password" size="35px" placeholder="Password" id="password" name="password"></td><td></td></tr>
    </tbody>
    </table><br><br>
    <input action="submit" value="  Register  " id="submit" type="submit"><br>
    </form>
</body>


以下是php脚本:

<?php
  $oldname = $_POST['hidden'];
  $password = $_POST['password'];
  $title = "Your password is: ";
  echo $title . "<br>" . $password . "<br>Your old name was: <br>" . $oldname;
?>

我测试过了,我可以从 ajax 获取到 php 页面的值

【讨论】:

  • $mysqli->real_escape_string()函数不包含php代码,请自行修改
  • 我试过这个,但我得到了这个响应...“你的密码是:你的旧名字是:”
  • @user2635579 如果madi 测试了这段代码并且工作正常,那么我的猜测是它与您的数据库有关,而不是您的代码。
  • @user2635579:您更关心的是帖子回复,我已经按照您想要的方式编辑了代码。问题可能与您的sql有关。您应该先尝试不使用 mysqli。
猜你喜欢
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2013-12-04
  • 2021-09-09
  • 2011-02-28
相关资源
最近更新 更多