1

我正在尝试使用 codeigniter 在我的网站中实现 AJAX 调用方法,我想使用 AJAX 的原因是我可以从数据库中获取实时更新

单击按钮可以工作并显示所有 JSON 数据,但问题是当我尝试显示它无法识别的特定数组时,它似乎在遍历每个字符。

另一个奇怪的事情是当警报被调用时,我可以看到我希望能够打印特定数组的 html 和 head 标签,例如数组 id”

我为尝试解决问题所做的事情

  • 我已经提醒了数据类型,发现它是一个字符串

  • 我已经设法让 ajax 在常规 PHP 中工作,而不是在 codeigniter 中工作,所以他们的数据库没有问题

  • 我也尝试过使用 jQuery.parseJSON 所以我可以强制它是 json 但是脚本没有运行

  • 我使用了 JSONlint,显然它是一个有效的 JSON

任何帮助,将不胜感激

控制台日志

<html>
    <head>

    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAXpGbk1wkkaPiv_qkBevxAP9s4kk0oiiU&sensor=false"></script>
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>

[
[
    {
        "id": "1",
        "postcode": "NW6",
        "imgurl": "hello.jpeg",
        "from_user": "henny",
        "created_at": "2013-03-18 23:03:00"
    },
    {
        "id": "2",
        "postcode": "NW2",
        "imgurl": "test.jpeg",
        "from_user": "belly",
        "created_at": "2013-03-15 23:03:00"
    }
]
]

控制器

public function insertJSON()
{
    $this->load->model("values");
    $queryresults = $this->values->getDb();

    $arrays = array($queryresults);

    echo json_encode($arrays);  
}

看法

<script type='text/javascript' language='javascript'>

  $('#getdata').click(function (data) {

      $.ajax({

          url: '<?php echo base_url().'index.php/welcome/insertJSON';?>',
          type: 'POST',
          cache: 'false',
          datatype: 'json'

      }).done(function (data) {

         alert(data);

      });

  });

</script>

json_encode

[
[
    {
        "id": "1",
        "postcode": "NW6",
        "imgurl": "hello.jpeg",
        "from_user": "henny",
        "created_at": "2013-03-18 23:03:00"
    },
    {
        "id": "2",
        "postcode": "NW2",
        "imgurl": "test.jpeg",
        "from_user": "belly",
        "created_at": "2013-03-15 23:03:00"
    }
]
]
4

1 回答 1

2

您需要从您的控制器函数发回正确的响应标头(应用程序/json)。

尝试将您的控制器更改为以下内容:

public function insertJSON()
{
    $this->load->model("values");
    $queryresults = $this->values->getDb();

    $arrays = array($queryresults);

    $this->output->set_content_type('application/json')
                 ->set_output(json_encode($arrays));
}
于 2013-03-19T03:26:22.990 回答