簡體   English   中英

使用jQuery遍歷JSON數據

[英]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猜測。

使用$ .ajax $ .ajax文檔的dataType屬性

數據類型

“期望從服務器返回的數據類型。”

使用Firebug查找響應變量的類型。 在您的情況下,響應為字符串,但應為數組(或對象?)

如果您不希望jQuery自動評估json,請直接使用json,並在成功函數中添加以下內容:

var parsed = $.parseJson(response);

這是parseJson方法的文檔: parseJson

我認為您的問題是您沒有獲取實際的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM