使用jQuery遍历JSON数据

时间:2011-07-31 08:48:48

标签: php javascript jquery

我无法弄清楚如何将一堆MySQL行放入JSON数据结构中并迭代java脚本中的每个行字段。

这是我在codeigniter中的查询

function get_search_results() {

    //$this->db->like('title', $searchText);
    //$this->db->orderby('title');
    $query = $this->db->get('movies');

    if($query->num_rows() > 0) {

        foreach($query->result() as $movie) {

            $movies[] = $movie->title;                

        }

    }

    return $movies;

}

为json编码数组

$rows= $this->movie_model->get_search_results();
echo json_encode($rows);

我的jQuery AJAX请求,

 $.ajax({
      type: "GET",
      url: "publishlinks/search_movies",
      data: searchString,
      ...

这就是我试图遍历java脚本中的行的方法。它遍及每个角色:1 t 2 h 3 e 4 g ... 7 e 我需要这个:1游戏2输了3你

   success: 
      function(result) {                                
        $.each(result, function(key, val) {
        alert(key + ' ' + val);
      })

//alert(result);
}

6 个答案:

答案 0 :(得分:3)

看起来它将结果视为字符串而不是解析JSON,因此迭代它就好像它是一个字符串。这可能意味着它没有在响应中返回干净的JSON编码字符串,因此我会检查响应以确保它是有效的JSON。 jQuery应该智能地猜测内容类型并相应地解析。

您还可以尝试在ajax请求上使用 dataType:“json”选项强制将其解析为JSON而不是让jQuery猜测。

答案 1 :(得分:3)

使用$ .ajax的dataType属性 $.ajax documentation

  

dataType

     

“您希望从中获取的数据类型   服务器“。

使用firebug查找响应变量的类型。在你的情况下,响应是字符串,但它应该是数组(或对象?)

如果您不希望jQuery自动评估json,那么按原样使用它,并在success函数中添加以下内容:

var parsed = $.parseJson(response);

以下是parseJson方法的文档:parseJson

答案 2 :(得分:2)

我认为你的问题是你没有获取实际的json而是简单的字符串响应....

使用$ .getJSON或在jquery ajax请求中将dataType指定为json!

答案 3 :(得分:1)

您是否使用PHP返回JSON标头?

header('Content-type: application/json');

其他尝试

result = JSON.decode(result);

在“每个”循环之前

答案 4 :(得分:1)

请务必从服务器端返回正确的内容类型。对于将是application / json的JSON。

$rows = $this->movie_model->get_search_results();
header('Content-type: application/json');
echo json_encode($rows);

同样将 dataType:“json”添加到您的jQuery请求中,就像beefsack所说:

$.ajax({
  type: "GET",
  url: "publishlinks/search_movies",
  data: searchString,
  dataType: "json",
  ...

答案 5 :(得分:0)

dataType: "json",
success:function(data){
var obj=$.parseJSON(data);
data=obj.data;
$.each(data,function(){
   //json data
})
}