我无法弄清楚如何将一堆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);
}
答案 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
})
}