[英]Traverse JSON data with 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);
}
看起來好像將結果視為字符串而不是經過解析的JSON,因此像對待字符串一樣對其進行迭代。 這可能意味着它沒有在響應中返回干凈的JSON編碼的字符串,因此我將檢查響應以確保它是有效的JSON。 jQuery應該能夠智能地猜測內容類型並相應地進行解析。
您也可以在ajax請求上嘗試使用dataType:“ json”選項,以將其強制解析為JSON,而不是讓jQuery猜測。
我認為您的問題是您沒有獲取實際的json,而是簡單的字符串響應。
使用$ .getJSON或在您的jquery ajax請求中將dataType指定為json!
您是否使用PHP返回JSON標頭?
header('Content-type: application/json');
其他嘗試
result = JSON.decode(result);
在“每個”循環之前
確保從服務器端返回正確的內容類型。 對於JSON,將是application / 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",
...
dataType: "json",
success:function(data){
var obj=$.parseJSON(data);
data=obj.data;
$.each(data,function(){
//json data
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.