值不是来自PHP的$ POST数组

时间:2018-03-14 12:35:23

标签: php

当我创建数据对象并传递给PHP文件时,我正在使用ajax构建一个简单的注册表单。它显示变量并且不显示该PHP变量的值。 表单的HTML代码是

<form id="myForm" name="myForm" action="" method="POST" class="register">
    <p>
        <label>Name *</label>
        <input name="name" type="text" class="long"/>
    </p>
    <p>
        <label>Institute Name *</label>
        <input name="iname" type="text" maxlength="10"/>
    </p>         

    <div>
        <button id="button" class="button" name="register">Register &raquo;</button>
    </div>
</form>

js的代码是

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>
$(document).ready(function(){
    var form=$("#myForm").serialize();
    $("#button").click(function(){
        $.ajax({
            type:"POST",
            url: "mainlogic.php",
            data:form, 
            success: function(result){
                alert(result);
            }
        });   
    });
})
</script>

PHP的代码是 (mainlogic.php)

    if(isset($_POST)) {
         print_r($_POST);//////varaibles having null values if it is set
         $name=trim($_POST['name']);
         echo $name;        
    }

5 个答案:

答案 0 :(得分:3)

您正在对文档加载序列化表单。在此阶段,表格尚未填写。您应该在按钮单击事件处理程序中序列化您的表单。

$(document).ready(function(){

    $("#button").click(function(){
        var form=$("#myForm").serialize();
        $.ajax({
            type:"POST",
            url: "mainlogic.php",
            data:form, 
            success: function(result){
                alert(result);
            }
        });   
    });
})

答案 1 :(得分:1)

在此代码中,您可以在文档准备就绪后序列化空白表单:

<script>
$(document).ready(function(){
    var form=$("#myForm").serialize();
    $("#button").click(function(){
        $.ajax({
            type:"POST",
            url: "mainlogic.php",
            data:form, 
            success: function(result){
                alert(result);
            }
        });
    });
})
</script>

有效点击功能应该如下所示:

$("#button").click(function(){
    var form=$("#myForm").serialize();
    $.ajax({...

表示 - 点击按钮后立即序列化表单。

答案 2 :(得分:0)

Alpadev得到了正确答案,但这里有一些可以帮助你的潜在客户:

<强> AJAX

您应该在Ajax调用中添加以下error编码,以便在请求出现问题时显示信息:

$.ajax({
    […]
    error: function(jqXHR, textStatus, errorThrown){
        // Error handling
        console.log(form); // where “form” is your variable
        console.log(jqXHR);
        console.log(textStatus);
        console.log(errorThrown);
    }
});

<强> $ _ POST

$ _ POST指的是页面传递给服务器的所有变量。 您需要使用变量名称在php中访问它。

查看有关$ _POST的详细信息:
http://php.net/manual/en/reserved.variables.post.php

print_r($_POST);应输出您网页上所有已发布变量的数组 确保:
⋅Ajax请求正确结束,
print_r指令不受其他评估为false的东西的限制,
·数组显示在页面中,不会被其他元素隐藏。 (您可以查看html源代码而不是输出页面以确定它。)

答案 3 :(得分:0)

var form = $("#myForm").serialize();

这是从表单收集数据的行。

您在$(document).ready(function() {之后立即拥有它,因此您会在DOM准备就绪后立即收集数据 。这不起作用,因为在用户有机会填写表格之前

单击按钮时,您需要从表单中收集数据。在click事件处理函数中移动该行。

答案 4 :(得分:0)

问题是,在加载页面时,如果它们还没有值,则在开始时计算表单值。您必须在按钮绑定中移动变量表单计算。

<script>
$(document).ready(function(){
    $("#button").click(function(){
        var form=$("#myForm").serialize();
        $.ajax({
            type:"POST",
            url: "mainlogic.php",
            data:form, 
            success: function(result){
                alert(result);
            }
        });   
    });
})
</script>