2014-01-16 172 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

这足以真来推断它。 :) –