【问题标题】:Ajax request to another controller in codeigniter not working对codeigniter中另一个控制器的Ajax请求不起作用
【发布时间】:2013-10-15 06:33:49
【问题描述】:

我的家庭控制器中有一个登录/注销方法。所有页面都有用户名和密码文本框,由不同的控制器生成。

我的所有视图都有一个通用 jquery 文件,它使用 ajax 将用户名和密码从任何页面发布到 Home 控制器登录/注销方法。但这似乎不起作用,因为这些页面是由不同的控制器而不是 Home 控制器生成的。当我检查 firebug 时,我看到 Ajax 脚本中提到的 url 被附加到该页面的控制器中,并且没有发生实际的重定向。

我发现通常建议在这种情况下使用自制助手。但我不确定如何通过 jquery ajax 使用它。

家庭控制器

                function validate_login_user()
            {
                    $this->load->model('model');

                    if ($this->sristi_model->validate_login())
                    {
                        $data = array (
                            'username' => $this->input->post('username'),
                            'is_logged_in' => true
                        );
                        $this->session->set_userdata($data);
                        $this->load->view('includes/logged_in.php');
                        //return true;
                    }else{
                        $this->load->view('includes/loginerror.php');
                        //return true;
                    }
            }

JavaScript

    $('#sitelogin').on('click', '.login', function(){
        var username = $('#username').val();
        var password = $('#password').val();
        if (username == "" || password == ""){
            $('#error').fadeIn(200).delay(1000).fadeOut(1000);
            return false;
        }else if(username !== undefined && password !== undefined)
        {
            $.ajax({
                url:"home/validate_login_user",
                type:'POST',
                data:{username:username,password:password},
                cache:false,
                success:function(msg){
                    $('#sitelogin').html(msg).hide().fadeIn(800);
                    $('#loginerror').delay(2000).fadeOut(1000);
                }
            });
            return false;
        }else{
            return false;
        }
    });

当我尝试通过产品控制器登录时,我在 Firebug 中得到了这个

URL: POST validate_login_user
localhost/ci/product/categories/localhost/ci/home/validate_login_user

Status: 500 Internal Server Error

Domain: localhost

Size: 1.6 KB

Remote IP: [::1]:80

如果你发现了什么,请告诉我...

【问题讨论】:

  • 你能提供...任何代码吗?
  • 它更多的是一个概念性问题,因此我想在没有代码的情况下问它。你想要代码的哪一部分?
  • firebug 的输出,用于登录/注销的主控制器代码,用于执行请求的 javascript 代码。甚至可能是登录表单的 html。
  • 我已经添加了代码,如果你看到了什么,请告诉我。
  • 我不明白为什么会有 3 次反对票....?????。请解释一下,否则不要玩弄

标签: php codeigniter jquery


【解决方案1】:

我不知何故能够在我的通知中看到这个答案,但我没有在这个页面上看到它。在 ajax url 前面加上一个斜杠就可以了,现在一切正常。

感谢评论的人。

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    相关资源
    最近更新 更多