2011-04-11 83 views
4

我想知道人们如何使用CodeIgniter和jQuery进行AJAX。CodeIgniter,PHP,jQuery和AJAX

在你的AJAX请求你有

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

那么,你如何建立的网址是什么?

  • 在你的视图文件所有的JavaScript和只使用site_url()打造的URL
  • 在外部JS文件中的所有你的JavaScript,有一个标题视图中,包括有什么如<script>var base_url = '<?php echo site_url(); ?>';</script>。然后在你的外部js文件中有url: base_url+'rest/of/path/';
  • 其他一些方法?

回答

4

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

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

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

在回答你的问题,我已经不需要指定基础URL,如把“/”控制器名称自动设置站点的根目录之前。您也可以使用../等

+0

只是用'确实/ '当你在本地主机上开发其中的URL是一样的东西'HTTP工作://本地主机/ myproject的/'? – Hailwood 2011-04-11 00:47:36

+0

啊,这是一个很好的观点。我通常改变我的主机文件时,我在当地发展,并会在配置设置我BASE_URL喜欢的东西'HTTP:// local.website.com.'。或者你可以在你的apache配置中设置一个虚拟主机。 – dangermark 2011-04-11 00:55:27

+0

嗯,这是一个很棒的主意。你将如何编辑你的主机文件? 只有'local.myproject.com localhost/myproject'?还是我完全错了? – Hailwood 2011-04-11 01:15:26

0

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

我当前从页面末尾的视图中加载JavaScript。由于它是一个包含html <script>的PHP文件,因此可以使用URL助手函数(如site_url())为每个函数生成所需的URL。

视图的例子可能包括:

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

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

0

通常我做一个小的JavaScript在我的头,我在其中创建BASE_URL和SITE_URL变(通常是一个对象我的名字CI的性能,但是这是一个个人preeference)。我通过使用PHP回显值来填充这些值。如果您创建了第一个加载的脚本,那么您始终可以在JS中使用site_url。

由于我在移动我现在不能公布源。

2

如果你正在写在外部文件的阿贾克斯,那么你可以在视图文件中定义自己的基本网址像

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

然后在你的外部AJAX文件写

url : base_url+'controllerName/functionName',