0

我的 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,但结果是一样的。需要什么设置吗?

4

1 回答 1

1

用codeigniter 2检查这个AJAX csrf保护。这解决了我同样的问题

http://aymsystems.com/ajax-csrf-protection-codeigniter-20

更新:我在我的测试服务器上检查了你的 control.php 文件。

if($_POST) { /* i only commented gangway library functions  */
} else { /* only replace the load->view with an print_r $data; and its work */ }

并对构建的舷梯库发表评论。并且 control/controlHome 正常工作,没有任何错误。检查导致错误 500 的舷梯库。

于 2013-01-27T18:19:02.473 回答