为什么我的ajax php文件变量未定义

时间:2015-09-15 19:18:36

标签: php jquery ajax forms

我正在尝试学习jQuery ajax这个函数似乎工作正常所以浏览器web开发人员工具说但是这些值并没有被提到我在这里的php文件(url)我的简单代码。

这是HTML和jQuery文件

<!Doctype HTML>
<html>
<head>
    <title>Working with PHP and jQuery</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <script src="js/jquery-1.11.3.min.js"></script>
</head>
<body>
    <form id="#myForm">
    <p>
        <label>Enter your name</label>
        <input  type="text" name="Name">
    </p>

    <p>
        <label>Are you male
        <input type="checkbox" name="IsMale">
        </label>
    </p>

    <p>
        <label>Enter your email address</label>
        <input type="email" name="Email">
    </p>
    <p>
        <input type="submit" id="submitButton" name="submitButton" value="Submit">
    </p>
    </form>

    <div id="loadResult"></div>

    <script>
    $(function() { 
        $('#submitButton').on('click', function(e){
            e.preventDefault();
            $.ajax({
                url: 'php/form1.php',
                type: 'POST',               
                data: $('#myForm').serialize(),
                success: function(result) { 
                    console.log(result); $('#loadResult').html(result); 
                },
                error: function(badresult){ alert("ajax error function hit"); console.log(badresult); }             
            });         
        });
    });
    </script>
</body>
</html>

这是php文件

<?php 

    $name = $_POST['Name'];
    $isMale = $_POST['IsMale'];
    $email = $_POST['Email'];

    echo "Name is $name, are you a male? $isMale. Your email address is $email";
?>

我正在使用jquery序列化功能,但不知道我哪里出错了

1 个答案:

答案 0 :(得分:0)

你最有可能获得的是这条线爆炸

$isMale = $_POST['IsMale'];

在您的HTML中我们看到了

<input type="checkbox" name="IsMale">

复选框在未选中时未成功,这意味着它们不会显示在$_POST中。来自jQuery serialize manual

  

注意:只有&#34;成功控制&#34;被序列化为字符串。没有提交按钮值被序列化,因为表单未使用按钮提交。
剪断
  复选框和单选按钮(类型为&#34;输入&#34;或&#34;复选框&#34;的输入)中的值仅在选中时包含

所以你需要检查它是否已提交

$isMale = (isset($_POST['IsMale'])) ? 'Yes' : 'No';