Php CodeIgniter给了我404错误,但我可以在Firebug中看到响应

Php CodeIgniter给了我404错误,但我可以在Firebug中看到响应,php,ajax,codeigniter,Php,Ajax,Codeigniter,我已经在SO中读到一些非常类似的问题,但没有一个解决方案对我有效 例如,视图中的代码存在以下问题: $.ajax({ url: 'periodista/json', async: false, dataType: 'json', success: function (json) { $.each(json, function(k,v){valores.push(v); }); } 我得到一个404NotFound错误,但Firebug向我显示了响应(http://i.imgur.com/yG

我已经在SO中读到一些非常类似的问题,但没有一个解决方案对我有效

例如,视图中的代码存在以下问题:

$.ajax({
url: 'periodista/json',
async: false,
dataType: 'json',
success: function (json) {
$.each(json, function(k,v){valores.push(v); });

}
我得到一个404NotFound错误,但Firebug向我显示了响应(http://i.imgur.com/yG9cW.png)

我尝试从一个简单的php脚本中读取url响应,该脚本带有file_get_contents函数,但它不起作用

$url="http://localhost/xampp/populus/wordpress/app/periodista/json";
$json = file_get_contents($url);
我得到了相同的答案(404错误,我可以在Firebug中读取响应)

我尝试过使用“index.php”URL,在htaccess的帮助下使用不带index.php的URL,并使用完整的URL,但没有任何效果。我没有使用wordpress

我想当我尝试访问视图时控制器没有加载,但我不知道为什么

编辑:我的控制器功能代码(我正在使用Ignited Datatables库):


尝试设置内容类型json并将其输出,而不是加载视图,如:

public function json() {
    $datatables = new Datatables();
    $datatables->select('nro_boletin')->from('proyecto_de_ley');
    echo $datatables->generate();


    $data['title'] = "Periodista";
    $this->output
               ->set_content_type('application/json')
               ->set_output(json_encode($data));
   //OR
   header('Content-Type: application/json',true);
   echo json_encode($data);

}
由于您使用的是ajax,因此会调用您的函数

$.ajax({
    url: 'periodista/json', <-- your controllers function
    data: {"test" : "test" },
    async: false,
    dataType: 'json',
    success: function (json) { //output from your json function
          $.each(json, function(k,v){valores.push(v); });
    }
$.ajax({

url:'periodista/json',我遇到了类似的问题,我必须手动设置标题

public function get_prev_input_data()
{
    header("HTTP/1.1 200 OK");
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");

    $userdata = [
        "id" => 5,
        "username" => "captain hook",
    ];

    $prev = [
        "a1" => 123,
        "a2" => 46,
    ];
    $response = [
        "userdata" => $userdata,
        "previnput" => $prev
    ];
    echo json_encode($response);
}
所以你应该加上这一行

    header("HTTP/1.1 200 OK");

在你的json()函数中。

你能在你的控制器中显示代码吗?@user1877722请在你的问题中添加代码(通过编辑它),而不是作为注释。你不应该加载视图。试试
$this->output->set\u content\u type('application/json')->set\u output(json\u encode($data))
对不起,这里有控制器代码。好的,但是如果我不加载视图,我如何访问json()函数?我如何在不加载视图的情况下调用此函数?您不需要加载视图,即您的控制器函数(json)如果我输入periodista/json,我可以看到json数据,但只有在chrome中,在firefox中,它会给我一个找不到的文件。你能尝试将你的ajax url更改为::url:“periodista/json”非常感谢,但它仍然不起作用。我不知道这是否是问题所在,因为我无法使用file\u get\u contents方法,我不知道为什么当我不加载视图时,它在firefox中不起作用
    header("HTTP/1.1 200 OK");