2

我已经在 SO 中阅读了一些非常相似的问题,但没有一个解决方案对我有用。

问题是,例如,在视图中使用此代码:

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

}

我收到 404 Not Found 错误,但 Firebug 向我显示响应 (http://i.imgur.com/yG9cW.png)

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

$url="http://localhost/xampp/populus/wordpress/app/periodista/json";
$json = file_get_contents($url);

我得到了相同的答案(404 错误,我可以在 Firebug 中读取响应)。

我已经尝试使用“index.php”网址,在 htaccess 的帮助下没有 index.php 的网址,并使用完整的网址,但没有任何效果。而且我没有使用wordpress。

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

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

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


    $data['title'] = "Periodista";
    $this->load->view('periodista/json', $data);

}
4

2 回答 2

1

我有一个类似的问题,我不得不手动设置标题。

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()函数中。

于 2018-03-19T06:15:44.500 回答
0

尝试设置内容类型 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); });
    }
于 2012-12-05T03:40:03.640 回答