2011-07-31 115 views
0

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

这是我在笨查询

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é4克... 7e中 我需要这样的:1个游戏2负于3你

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

//alert(result); 
} 
+0

看起来我的权利。你碰到什么样的问题?任何错误? – Kevin

+2

你的意思是这样的? http://stackoverflow.com/questions/515684/how-to-use-json-with-jquery – Quasdunk

回答

3

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

您也可以尝试dataType:“json”选项对ajax请求强制它被解析为JSON而不是让jQuery猜测。

+0

Ooohhh谢谢,我有dataType:'json'由于某种原因而被注释掉,我甚至从我的问题中删除了这部分OO –

1

你返回一个JSON头与你的PHP这是每一个字符遍历?

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

否则尽量

result = JSON.decode(result); 
当着你的“每一个”循环

2

我觉得你的问题是你不获取实际的JSON,但简单的字符串响应....

使用$ .getJSON或在您的jQuery Ajax请求指定的dataType作为JSON!

3

使用$就 $.ajax documentation

数据类型的数据类型属性

“的类型,你从 服务器期待回的数据。”

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

如果你不想jQuery的自动EVAL那么JSON住它,因为它是在成功的函数添加以下内容:

var parsed = $.parseJson(response);

这里是parseJson方法的文档:parseJson

1

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

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

另外补充数据类型: “JSON”到您的jQuery的要求,就像beefsack说:

$.ajax({ 
    type: "GET", 
    url: "publishlinks/search_movies", 
    data: searchString, 
    dataType: "json", 
    ... 
0
dataType: "json", 
success:function(data){ 
var obj=$.parseJSON(data); 
data=obj.data; 
$.each(data,function(){ 
    //json data 
}) 
}