2014-01-16 5 views
0

У меня только что появился вызов jQuery AJAX, и теперь у меня возникли проблемы с разбором значения, которое я возвращаю. Я работаю с базой данных MySQL и возвращая PHP array() как и к моей функции JQuery AJAX: echo json_encode($reservationArray);Итерация через массив JSON

Теперь, когда я добавляю это к моей странице в простом сНу теге это результат:

[{"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 (Пожалуйста, исправьте меня, если я ошибаюсь). Я пробовал практически каждый метод доступа к данным и не могу. Ниже приведен подход, который я беру, чтобы построить новый блок кода, кучу строк - по одному для резервирования (я сократил строку для этого примера).

EDITED:

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, это означает, что у вас есть оператор SQL, который вытягивается только из таблицы «резервирование». Вероятно, вам нужно сделать «соединение» между «резервированием» и «рестораном», чтобы вывести нужные поля. –

ответ

1

Я считаю, что это правильный JSON (Пожалуйста, поправьте меня, если я ошибаюсь).

Похоже, что ваш JSON не является правильным документом. Как заметил Уокей в комментариях, нигде нет полей «имя» или «дата».

[{ 
     "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 код для выполнения запроса, который объединяет данные из reservations и restaurants.

0

Вы также не проинструктировали jQuery ожидать JSON взамен. Это может быть синтаксический анализ как строка. Обратите внимание на вариант dataType.

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 очень хорошо вывел это, тем не менее, поэтому я очень сомневаюсь, что он анализирует данные как строку. Однако, вероятно, это хороший совет. –

+0

Да, но для определения jQuery нужен заголовок типа MIME. Учитывая проблемы с jQuery, мне интересно, включает ли PHP такой заголовок. 'Тип данных, которые вы ожидаете от сервера. Если ни один не указан, jQuery попытается вывести его на основе MIME-типа ответа ' –

+0

. Это правда. :) –

Смежные вопросы