2014-03-12 107 views
0

我一直在做一个项目,需要我在codeigniter中对控制器进行ajax调用。本地的网站工作得很好,但上传到我的虚拟主机(Versio)后停止工作。Codeigniter - Ajax请求,找到控制器,但无论如何404?

出于某种原因,它似乎像ajax调用找到控制器,但无论如何给我一个404错误。我认为它实际上发现控制器的原因是因为当我更改url时,AJAX请求会向我显示一个不同的404页面,而不是标准的CodeIgniter 404页面。

我的要求是这样的:

var baseURL = "http://sitename.com/index.php/"; 

    $.ajax({ 
     type: "POST", 
     url: baseURL+"Encounter/startEncounter", 
     dataType: "json", 
     cache: false, 
     success: function(data) { 
      alert(data); 
     } 
    }); 

我的配置文件看起来像这样:

$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/'; 

$config['index_page'] = ''; 

$config['uri_protocol'] = 'AUTO'; 

XSS过滤和CSRF关闭。

我的默认控制器是这样的,它加载就好:

$route['default_controller'] = "index"; 

我的.htaccess文件目前是空的。

非常感谢您的时间,希望有人能帮助解决这个问题。我之前找到的答案的追踪没有结果。

此致, 尼克

+0

Encounter控制器的startEncounter方法是什么样的? – Sam

+0

你设定路线$ route ['Encounter/startEncounter']? – aseferov

+0

在您上传到服务器上之前或之前,您是否已将'baseURL'添加到您的js代码中? – anurupr

回答

1

您需要添加一个头允许跨起源Ajax调用:

header('Access-Control-Allow-Origin: *'); 
index.php

+0

这样的声音可能会造成安全问题?此外,我目前还没有获得访问控制允许来源错误。 – Nick

+0

对不起,但你可以很明显地控制哪个域可以获得访问控制和/或添加认证系统。这是大多数移动应用程序的工作原理,因为每个应用程序都有不同的IP。 –