无法在codeigniter中尝试使用getJSON

时间:2013-03-01 23:19:07

标签: php javascript ajax codeigniter

我正在尝试使用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"
    }
]
]

3 个答案:

答案 0 :(得分:1)

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

echo json_encode($data);

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

答案 1 :(得分: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);
}

答案 2 :(得分:1)

缺少的变量$ arr应该是循环之前声明的$数组变量。这样做:

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);
}

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