-1

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

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

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

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

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

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

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

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

任何帮助,将不胜感激

控制器

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

3 回答 3

1
$data[] = $arr; // <--- This $arr doesn't exist.

echo json_encode($data);

您正在编码一个空白数组。你也没有正确地将你的数组发送到视图,你不应该只是回应它。

于 2013-03-01T23:24:52.990 回答
1

缺少的变量 $arr 应该是在循环之前声明的 $array 变量。这会做:

public function insert()
{

    $this->load->model("values");

    $queryresults = $this->values->Query();

    $array = array();

    foreach($queryresults as $row)
    {
        $array[] =  $row->postcode;
    }

    $data = array();

    $data[] = $array; // <--- The fix!

    echo json_encode($data);

    $this->load->view('answer', $data);
}

在进行实际检查之前,请考虑仔细检查您的代码。

于 2013-03-02T07:52:59.897 回答
1

@Ben 是对的,$arr从哪里来?

public function insert()
{

    $this->load->model("values");

    $queryresults = $this->values->Query();

    $array = array();

    foreach($queryresults as $row)
    {
        $array[] =  $row->postcode;
    }

    echo json_encode($array);
    exit; 
//    Just echo it out, no need to load view!
//    $this->load->view('answer', $data);
}
于 2013-03-02T02:14:01.637 回答