【问题标题】:PHP Codeigniter form submit using JQuery使用 JQuery 提交 PHP Codeigniter 表单
【发布时间】:2012-04-19 07:05:42
【问题描述】:

我是 PHP Codeigniter 框架的新手。我正在设计一个使用链接的页面。单击链接时,它正在调用一个 jquery 函数,该函数通过 jquery 提交表单。我已经使用 codeigniter 表单验证方法进行服务器端验证,暂时我禁用了客户端验证。

问题是在这个通过jquery提交表单的过程中,codeigniter表单验证方法不起作用。

但是如果我使用提交按钮来提交表单,那么 codeigniter 表单验证方法可以完美运行。

如果我需要通过jquery提交表单并使用codeigniter表单验证方法,请告诉我该怎么做。

请在下面找到代码:

登录表格:

<?php echo validation_errors(); ?>
<form name="login-form" id="login-form" method="post" action="<?php echo base_url();?>index.php/login/login_form" >
    <H2>Login</H2>
    <div id="login-box-name">
        Email:
    </div>
    <div id="login-box-field">
        <input name="user-name" id="user-name" class="form-login" title="Please Enter Correct User Name" value="" size="30" maxlength="2048" />
    </div>
    <div id="login-box-name">
        Password:
    </div>
    <div id="login-box-field">
        <input name="password" id="password" type="password" class="form-login" title="Please Enter Correct Password" value="" size="30" maxlength="2048" />
    </div>
    <br />
    <span class="login-box-options">
        <input type="checkbox" name="1" value="1" title="Want this computer to remember you!!"> Remember Me <a href="#" id="login-div-change">Forgot password?</a>
    </span>
    <br />
    <br />
    <a href="" id="login-submit">
        <img src="<?php echo base_url();?>assets/images/login-btn.png" width="110" height="40" style="margin-left:90px;" />
    </a>
    <input type="submit" name="submit" id="submit" value="Submit" />
</form>

点击“链接”提交表单的jquery函数:

$("#login-submit").click(function() { $('#login-form').submit(); 返回假; });

控制器功能:

公共函数 login_form() { $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $data['title'] = '登录'; $data['errorMessage'] = ''; $this->form_validation->set_rules('user-name', 'Email', 'required'); $this->form_validation->set_rules('password', 'Password', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('templates/header', $data); $this->load->view('login', $data); $this->load->view('模板/页脚'); } 别的 { $this->load->view('templates/header', $data); $this->load->view('模板/菜单'); $this->load->view('index', $data); $this->load->view('模板/页脚'); } }

如果我点击表单的“提交”按钮,那么 codeigniter 验证适用于用户名和密码字段。但是如果我点击 id="login-submit" 的链接,那么它会调用 jquery 函数并提交表单。但是这次 codeigniter 验证不适用于用户名和密码字段。

我需要通过链接提交表单,codeigniter 验证功能应该可以解决这个问题。

提前致谢.....

【问题讨论】:

  • 一些代码可能会有所帮助...您确定在控制器中为 jQuery 和默认提交操作调用相同的函数吗?
  • 老兄!我非常喜欢 jquery 和 CI,整天都在使用它,让我告诉你一些对你有很大帮助的事情!看看this jQuery Plugin,它会让你的生活轻松100倍,还记得在你需要从php方面看到一些不太加起来的东西时使用print_r
  • 另一个提示我可以给你bookmark this page并经常使用它,使用它的一个好方法是单击左上角的Table of Contents标签,当它打开时,使用(在chrome中是什么我使用)ctrl+f 调出“查找”,然后只需键入您要查找的内容并快速轻松地找到链接
  • 如果你给我更多的工作,(即显示一些代码)我会尝试从所有 3 个方面(jQuery、Form Plug 和 CI)为你创建一个完整的示例
  • 你的意思是它不工作?你检查了网络选项卡/萤火虫,看看 jquery 函数返回什么?

标签: php codeigniter


【解决方案1】:

使用.preventDefault() 而不是仅仅在锚点点击事件上返回 false。

这发生在我之前,在我看来,在单击事件中使用 .submit() 并返回 false 以停止锚点的默认行为时存在冲突。

【讨论】:

  • 成功了吗?后续问题 - 当您已经有提交按钮时,为什么还要使用链接提交表单? .submit() 有一个回调函数,你知道,它可能更适合你的需求。
  • 我使用链接只是为了使网站具有统一的设计,因为我使用按钮的图像,我认为只有使用链接才有可能。是的,我现在知道了(回调函数)......它肯定会帮助我......再次感谢 rgin
  • @rgin,你能再帮我解决这个问题吗?我的解决方案有问题,我的$("#form").submit() 不起作用。
【解决方案2】:

上面的代码运行良好。实际上,我在代码中犯了一个愚蠢的错误。 我为 jQuery 使用了以下代码,它现在可以工作了。

$("#login-submit").click(function(e) { e.preventDefault(); $('#login-form').submit(); });

谢谢

【讨论】:

  • 你能再帮我解决这个问题吗?我的解决方案有问题,我的 $("#form").submit() 不起作用。
【解决方案3】:

发生这种情况是因为它在单击按钮时一直调用该函数。你需要阻止它。

$("#login-submit").click(function(e){
 e.preventDefault();
 $('#login-form').submit();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    相关资源
    最近更新 更多