【问题标题】:CodeIgniter, PHP, jQuery and AJAXCodeIgniter、PHP、jQuery 和 AJAX
【发布时间】:2011-04-11 00:18:00
【问题描述】:

我想知道人们如何将 CodeIgniter 和 jQuery 用于 AJAX。

在您的 AJAX 请求中,您有

{
  url : ???,
  data : {a:1,b:2},
  success: ....
}

那么,如何构建 URL?

你呢

  • 在视图文件中包含所有 JavaScript,只需使用 site_url() 构建 URL
  • 在外部 js 文件中包含所有 JavaScript,包含包含 <script>var base_url = '<?php echo site_url(); ?>';</script> 之类的标题视图。然后在你的外部 js 文件中有url: base_url+'rest/of/path/';
  • 其他方法?

【问题讨论】:

    标签: php jquery ajax codeigniter


    【解决方案1】:

    我将所有的 js 放在一个外部文件中,并将其加载到我的模板中。

    对于特定的 ajax 请求,只需像往常一样调用页面即可。

    $.ajax({
        type: 'POST',
        url: '/ajax/login',
        data: blabla,
        success: function(data) {
        // do something
        },
        dataType: 'json');
    });
    

    在回答您的问题时,我无需指定基本网址,因为在控制器名称之前放置“/”会自动设置站点的根目录。你也可以使用 ../ 等

    【讨论】:

    • 当你在 localhost 上开发时使用 / 工作,其中 url 类似于 http://localhost/myproject/?
    • 啊,这很好。我通常在本地开发时更改主机文件,并将配置中的 base_url 设置为 http://local.website.com. 之类的东西。或者你可以在你的 apache 配置中设置一个虚拟主机。
    • 嗯,这是个好主意。你将如何编辑你的主机文件?只有local.myproject.com localhost/myproject?还是我完全错了?
    • 阅读这篇文章:apptools.com/phptools/virtualhost.php 我建议做一些更简单的事情,比如http://myproject(只是为了避免任何错误)。但基本上你需要在 apache 的 httpd.conf 中创建一条记录,然后进入你的 hosts 文件并将 127.0.0.1 指向 myproject。无论如何,那篇文章应该会有所帮助。
    【解决方案2】:

    如果您在外部文件中编写 ajax,那么您可以在视图文件中定义基本 url,例如

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

    然后在你的外部 ajax 文件上写入

    url : base_url+'controllerName/functionName',
    

    【讨论】:

      【解决方案3】:

      也可以通过加载包含您的 JavaScript 的视图来完成。

      我目前从呈现页面末尾的视图加载 JavaScript。由于它是一个包含 html &lt;script&gt; 的 PHP 文件,因此您可以使用像 site_url() 这样的 URL 辅助函数来生成每个函数所需的 URL。

      示例视图可能包含:

      <script>
      $.ajax{
          url : "<?=site_url("controller/function")?>",
          data : {a:1,b:2},
      }
      </script>
      

      这将为您的 JavaScript 获取 CodeIgniter 生成的 URL。您甚至可以将变量传递到视图中以更好地控制您的 js。

      【讨论】:

        【解决方案4】:

        通常我在我的标题中创建一个小的 javascript,在其中我创建一个 base_url 和 site_url 变量(通常是我命名为 CI 的对象的属性,但这是个人偏好)。我通过使用 PHP 回显这些值来填充这些值。如果您将其作为第一个加载的脚本,那么您将始终在 JS 中使用 site_url。

        由于我在移动设备上,我现在无法发布源代码。

        【讨论】:

          猜你喜欢
          • 2016-10-30
          • 2017-06-19
          • 1970-01-01
          • 2017-02-05
          • 1970-01-01
          • 2014-04-18
          • 1970-01-01
          • 2015-05-11
          • 1970-01-01
          相关资源
          最近更新 更多