【问题标题】:Codeigniter AJAX url not found找不到 Codeigniter AJAX url
【发布时间】:2016-10-29 03:52:25
【问题描述】:

我在 codeigniter 中使用 .ajax 函数进行 ajax 调用,我的控制器被称为 control,我有一个名为 Login 的函数

但是当我运行这段代码时:

 $.ajax({
        url: "Connection/Login",
        type: "POST",
        data: Login_data,
        success: function () {
            alert('ajax worked');
        }

    });

控制台给了我 404 not found 错误。 并且添加 index.php 不起作用。

编辑:我可以在我的控制器中访问我的功能而根本不提及控制器,所以我可以调用 url : "login" ,我不需要添加名为 connection 的控制器?

这是因为我的路由文件吗?因为我需要有组织的 url 的路由文件,我无法访问另一个控制器功能,但控制器设置为默认控制器

路由文件:

$default_controller = "网页"; $controller_exceptions = 数组('管理员','论坛');

$route['default_controller'] = $default_controller; $route["^((?!\b".implode('\b|\b', $controller_exceptions)."\b).*)$"] = $default_controller.'/$1'; $route['404_override'] = ''; $route['translate_uri_dashes'] = FALSE;

【问题讨论】:

  • 在网址中尝试control/login

标签: jquery html ajax codeigniter


【解决方案1】:

将 base_url() 添加到 ajax url

var base_url = <?php echo base_url()?>;
$.ajax({
    url: base_url+"Connection/Login",
    type: "POST",
    data: Login_data,
    success: function () {
        alert('ajax worked');
    }

});

从隐藏在视图中的输入更好地传递 base_url

并在codeigniter中设置base_url配置

【讨论】:

    【解决方案2】:

    第一种方法

    如果index.php 隐藏,则添加baseurl+index.php/controllername/functionname,则ajax url 必须为baseurl+/controllername/functionname

    第二种方法

    也只使用函数名

    下面是例子:

    $.ajax({
        type : 'POST',
        url : 'sendrequest',
        data : { allVals : allVals },
        async : false,
        success : function(html)
                  {
                      $(".close").click();
                  }
    });
    

    在这种情况下,我的控制器功能是sendrequest

    $.ajax({
        type : 'POST',
        url :  $("#app_base_url").val() + 'index.php/user/activities/activity_calendar_add',
        data : { id : id},
        async : false,
        success : function(data)
                  {
                      $(".add_act").html(data);
                  }
    });
    

    这里$("#app_base_url").val() 可能包含baseurl

    【讨论】:

      【解决方案3】:

      首先你需要先调用控制器,然后调用方法。

      示例: url: '/control/login'

      其中control 是您的controller 的名称,loginmethod 的名称。

      【讨论】:

        【解决方案4】:
            $.ajax({
                url: "<?php echo site_url('connection/login')?>",
                type: "POST",
                data: Login_data,
                success: function () {
                    alert('ajax worked');
                }
            });
        

        将 site_url() 用于路由,将 base_url() 用于资产

        【讨论】:

          【解决方案5】:

          希望对你有帮助

          $.ajax({ 网址:“登录”, 类型:“发布”, 数据:登录数据, 成功:函数(){ alert('ajax 工作'); } });

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-25
            • 2015-08-29
            • 2013-03-27
            • 1970-01-01
            • 1970-01-01
            • 2013-12-28
            相关资源
            最近更新 更多