【问题标题】:PHP form processing using JQuery not Working使用 JQuery 的 PHP 表单处理不起作用
【发布时间】:2014-05-06 09:50:57
【问题描述】:

我正在使用PHPJQuery 处理一个表单,但它没有按照正常的方式处理。我的HTML 是:

    <form action="" method="POST" name="forgot_pass_form">
      <label><h3>Please Enter your email!</h3></label><br>
      <input type="text" name="email_pass" id="email_pass" />
      <input type="submit" name="submit" id="submit" value="Submit" />
    </form>

我的JQuery 代码与HTML 代码在同一页面中:

<script type="text/javascript">
    $(document).ready(function($) {

        var email = $('#email_pass').val();

        $("#submit").live('click', function(){
                $.post('email_password.php', 
                {
                'email_pass' : email
                }, 
                function(data) {
                    alert(data);                
                });

                return false;
            });
    }); 
</script>

我在email_password.php 上的PHP 代码:

<?php


    $email = $_POST['email_pass'];

    if(empty($email)){
        echo  'empty';  
    } else {
        echo 'Not'; 
    }
?>

这里的问题是它总是用empty 提醒我,即使我在text box 中输入了一些内容

我什至尝试过这种方式:

 if(empty($_POST)){
    echo 'empty';    
   } else {
    // process the form 
    $email = $_POST['email'];
    if(empty($email)){
        echo 'Email is empty';
    } else {
        echo 'Email is not empty';  
    }
}

通过尝试这种方式,它会以Email is empty 提醒我。请帮忙

【问题讨论】:

  • 您的网络控制台说什么,是在发布“发布”参数吗?
  • 你用的是什么 jQuery 版本?
  • 我认为是1.91.10。问题是我没有在.live() 方法中使用var email。解决了:)
  • @user3293145 请查看我的 answer here 以获得完整的 AJAX 示例
  • @MonkeyZeus 如果表单使用form action="" 提交给自己,那么.attr('action') 使用什么?

标签: php jquery html forms validation


【解决方案1】:

使用0n()并在点击函数中获取email值

<script type="text/javascript">
    $(document).ready(function($) {

          $("#submit").on('click', function(){
                var email = $('#email_pass').val();
                $.post('email_password.php', 
                {
                'email_pass' : email
                }, 
                function(data) {
                    alert(data);                
                });

                return false;
            });
    }); 
</script>

【讨论】:

  • 监听按钮点击不正确。您必须侦听表单提交才能在所有浏览器中正确捕获事件。 $('form[name="forgot_pass_form"]').on('submit', functione(){});
  • 如果使用.on('click')而不是.on('submit'),在不同的浏览器上会有所不同吗? @MonkeyZeus
  • @user3293145 这正是我所说的,是的。与提交表单相比,监听按钮的点击是一个不同的事件。即使click 为您工作,它也不是 100% 可靠的。收听提交是 100% 可靠的。
【解决方案2】:

问题是您使用 jQuery 进行了 $_POST 调用,并在该函数中以新名称 email_pass“发布”。更新您的 PHP 文件以引用 $_POST['email_pass'],然后您就可以开始了。

【讨论】:

    【解决方案3】:

    当您尝试捕获字段值时,它必须是相同的名称。您在表单中的名称是“email_pass”,而在您的 PHP 代码中您正在等待“email

    这应该是:

    if(empty($_POST)){
        echo 'empty';    
       } else {
        // process the form 
        $email = $_POST['email_pass']; // The field form name
        if(empty($email)){
            echo 'Email is empty';
        } else {
            echo 'Email is not empty';  
        }
    }
    

    对不起我的英语:s

    【讨论】:

    • 对不起,这是一个愚蠢的错误,但我仍然得到与以前相同的响应,没有任何变化
    【解决方案4】:

    使用此代码

    <script type="text/javascript">
        $(document).ready(function($) {
    
    
    
            $("#submit").live('click', function(){
     var email = $('#email_pass').val();
                    $.post('email_password.php', 
                    {
                    'email_pass' : email
                    }, 
                    function(data) {
                        alert(data);                
                    });
    
                    return false;
                });
        }); 
    </script>
    

    【讨论】:

    • 添加 var email = $('#email_pass').val();在 $("#submit").live('click', function(){
    • 它有什么不同? @user3293145 虽然不是解决方案,.live() 已被弃用,您应该升级您的 jQuery 并使用 .on()
    • @我可以吃芝士汉堡。我知道,但他使用的是旧版本
    • 我正在使用CMS,即使在升级JQuery 之后,.on() 大部分时间都不起作用,而.live() 起作用
    • 是的,它要我等 2 分钟 @Ananth
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    相关资源
    最近更新 更多