【发布时间】:2013-01-27 18:02:07
【问题描述】:
我的 Web 应用程序向远程服务器中的 Codeigniter-php 代码发出 Ajax 请求。它适用于本地主机,但不适用于远程主机中的特定控制器。这很奇怪,因为两个控制器都在 localhost 中工作。 请求:
$.ajax({
async:true,
type: "POST",
dataType: "json",
url:"/CI/site/index.php/contact/submitContact",
data: "", //data example
success:arrived,
error:problems });
function arrived(data){
var dataJson = eval(data);
}
function problems(){
$("#result").text('Problems.');
}
我用log_message检查到货。使用下一个功能可以正常工作:
function submitContact(){
log_message('error', 'submitContact. ');
//If data are received
if($_POST){
log_message('error', 'data. [application/controllers/contact.php]');
}
}
但是,如果我将请求更改为url:"/CI/site/index.php/control/controlHome",则没有任何日志消息,输出如下:
POST http://www.page.com/CI/site/index.php/control/controlHome 500 (Internal Server Error)
函数/application/controllers/control.php是下一个:
function controlHome(){
log_message('error', 'controlHome. [application/controllers/control.php]');
//If data are received
if($_POST){
log_message('error', 'data. [application/controllers/control.php]');
}
}
我也试过在 ajax 代码中使用完整的 url,但结果是一样的。需要什么设置吗?
【问题讨论】:
-
您将 csrf 保护设置为 true 吗?这就是 Ajax 的问题。
-
我已将 csrf 保护设置为 true,但我得到了同样的错误
-
尝试使用 csrf false 进行测试。当直接从浏览器“/CI/site/index.php/contact/submitContact”打开时,你会得到同样的 500 错误?
-
是的。同样的错误。我尝试用真假进行测试。那么就不是Ajax问题了。不是吗?
-
没错,不是 Ajax 问题。 Control.PHP 以 开头
标签: javascript ajax codeigniter jquery codeigniter-2