2014-01-16 60 views
0

我剛剛得到一個jQuery AJAX調用的功能,現在我無法解析,我返回值。我正與一個MySQL數據庫的工作並返回一個PHP array()像這樣我的jQuery的AJAX功能:echo json_encode($reservationArray);迭代通過JSON陣列

現在,當我在一個簡單的div標籤這個追加這對我的頁面結果:

[{"reservation_id":"3","available":"0","lock":"0","restaurant":"2","date_made":"2013-12-09 18:39:52","date_of":"2014-01-02 00:00:00","time":"08:30:00","guests":"5","user":"0"},{"reservation_id":"4","available":"0","lock":"0","restaurant":"2","date_made":"2013-12-09 18:40:15","date_of":"2014-01-02 00:00:00","time":"08:00:00","guests":"7","user":"0"}] 

我相信這是一個正確的JSON(請糾正我,如果我錯了)。我已經嘗試過幾乎每種訪問數據的方法,但都不能。下面是我正在採用的方法,構建一個新的代碼塊,一堆行 - 每個預留一個(我已經縮短了這個例子的字符串)。

編輯:

function my_ajax(rest_id){ 
    $.ajax({ 
     url: 'change_restaurant.php', 
     type: 'POST', 
     data: {'action': 'get-reservations', 'rest_id': rest_id}, 
     cache: false, 
     success: function(json) { 
     $.each(json, function(i, item) { 
     if(typeof item == 'object') { 
     newhtml += '<div>Restaurant Name :'+item.reservation_id+' Reservation Date: '+item.restaurant+'</div>' 
     } 
     else { 
      return false; 
     } 
     }) 

     $('#reservation-table').append(newhtml); 

     }, 
     error: function(xhr, desc, err) { 
     console.log(xhr + "\n" + err); 
     } 
    }); 

    } 
+2

我在該數組中的對象中看不到「name」屬性。您確實需要查看瀏覽器的開發人員控制檯以檢查錯誤。 – Pointy

+0

@Pointy - 我知道,我試圖縮短現在編輯的範例。 – CFitz

+0

@CFitz你能提供你的PHP代碼嗎?如果你自己寫PHP,這意味着你有一個只從'reservation'表中獲得的SQL語句。您可能需要在'預訂'和'餐廳'之間進行'連接',以便輸出所需的字段。 –

回答

1

我相信這是正確的JSON(請糾正我,如果我錯了)。

看來,JSON你接受不正確的文件。 正如Pointy在評論中所說的,沒有任何字段是「名稱」或「日期」。

[{ 
     "reservation_id" : "3", 
     "available" : "0", 
     "lock" : "0", 
     "restaurant" : "2", 
     "date_made" : "2013-12-09 18:39:52", 
     "date_of" : "2014-01-02 00:00:00", 
     "time" : "08:30:00", 
     "guests" : "5", 
     "user" : "0" 
    }, { 
     "reservation_id" : "4", 
     "available" : "0", 
     "lock" : "0", 
     "restaurant" : "2", 
     "date_made" : "2013-12-09 18:40:15", 
     "date_of" : "2014-01-02 00:00:00", 
     "time" : "08:00:00", 
     "guests" : "7", 
     "user" : "0" 
    } 
] 

您需要修改你的PHP代碼來執行,從reservationsrestaurants聯接數據的查詢。

0

您還沒有指示jQuery的期望回報JSON。它可能被解析爲字符串。請注意0​​選項。

function my_ajax(rest_id){ 
    $.ajax({ 
     url: 'change_restaurant.php', 
     type: 'POST', 
     data: {'action': 'get-reservations', 'rest_id': rest_id}, 
     dataType: "json", // EXPECT JSON 
     cache: false, 
     success: function(json) { 
     $.each(json, function(i, item) { 
     if(typeof item == 'object') { 
     newhtml += '<div>Restaurant Name :'+item.reservation_id+' Reservation Date: '+item.restaurant+'</div>' 
     } 
     else { 
      return false; 
     } 
     }) 

     $('#reservation-table').append(newhtml); 
     , 
     error: function(xhr, desc, err) { 
     console.log(xhr + "\n" + err); 
     } 
    }); 

    } 
+0

jQuery是在演繹這一點,雖然還不錯,所以我_very_多懷疑它的解析數據爲字符串。但是,這可能仍然是一個好建議。 –

+0

是的,但jQuery需要一個MIME類型頭來決定。鑑於jQuery的麻煩,我想知道PHP是否包含這樣的頭文件。 '您希望從服務器返回的數據類型。如果沒有指定,jQuery將嘗試基於MIME類型的response' –

+0

這足以真來推斷它。 :) –