【问题标题】:ajax form submit in codeigniter在codeigniter中提交ajax表单
【发布时间】:2014-10-13 11:15:58
【问题描述】:

在我的简单 ajax 登录表单中。我尝试在 codeigniter 中使用 ajax 验证我的表单,并将消息作为 json 数据返回。

以下是我的代码。它给出了正确的输出。我的问题是

我在 form 和 ajax url 中都使用了提交路径。如果不在这两个地方都使用它,它将无法正常工作。这是一个好习惯吗?有没有其他方法可以做到这一点?

有什么建议吗?

view_login.php

<body>
    <?php
    $this->load->helper('form');
    echo form_open('login/submit', 'id="login_form"');
    echo form_input('name', '', 'id="name"');
    echo form_password('password', '', 'id="password"');
    echo form_submit('button', 'Submit', 'id="submit"');
    echo form_close();
    ?>

</body>

custom.js

var url = 'http://localhost/ci_test_ajax/';
function user_login(data){
return $.ajax({
    url: url+'login/submit',
    type: 'POST',
    async: false,
    dataType: 'json',
    data: data
});
}
$(function () {
var url = 'http://localhost/ci_test_ajax/';
$('#login_form').submit(function (e) {
    e.preventDefault();
    var data = $('form#login_form').serialize();
    user_login(data).done(function(data){
        console.log(data);
    });
});
});

login.php中的提交函数

function submit()
{
    $this->load->library('form_validation');
    $this->form_validation->set_rules('name', 'Name', 'trim|xss_clean|required');
    $this->form_validation->set_rules('password', 'Password', 'xss_clean|min_length[4]|required');
    if($this->form_validation->run() == TRUE)
    {
        echo json_encode('yes');
    }
    else
    {
        echo json_encode('no');
    }
}

【问题讨论】:

    标签: php ajax codeigniter validation


    【解决方案1】:

    这根本不是一个好习惯, 如果您使用的是 codeigniter,请尝试添加 base_url();在你的 custom.js 文件包含之前的 header 部分中的 js 变量,然后访问 js 变量;

    <script>
    var base_url = '<?php echo base_url(); ?>'; 
    </script>
    

    【讨论】:

    • 感谢您的信息。我会改变的。 :)
    • 有没有其他方法可以同时避免表单中的action 和ajax 调用中的url
    【解决方案2】:

    如果您是通过 ajax 提交表单,那么为什么使用 2 个 url 您只能使用一个。

    试试这样的

    $(function () {
        $('#login_form').submit(function (e) {
            var url = this.action;
            $.ajax({
                url: url,
                type: 'POST',
                async: false,
                dataType: 'json',
                data: $(this).serialize()
            }).done(function(data){
                console.log(data);
            });
            return false;
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多