Возвращая [объект, объект] вместо правильного JSON

0

Вот моя функция

function getRecords(){            
    $.getJSON( "viewcustomers.php", function(data) {
        var items = [];
        $.each( data, function( key, val ) {
            items.push( "<td>" + val + "</td>" );
            alert(items);
         });
    });
}

Данные, представленные в файле viewcustomers.php, приведены ниже:

[{"id":"1","name":"ali","cnic":"01","address":"nipa","email":"301","phone":"luxairy "},{"id":"2","name":"raheel","cnic":"1234567","address":"abc flat","email":"[email protected]","phone":"0342"},{"id":"5","name":"Raheel","cnic":"123-4567-45","address":"Gulshan block 13-c","email":"[email protected]","phone":"03422301775"},{"id":"4","name":"zain","cnic":"12345678","address":"f.b area","email":"[email protected]","phone":"7894561"},{"id":"6","name":"Raheel","cnic":"123-4567-45","address":"Gulshan block 13-c","email":"[email protected]","phone":"03422301775"},{"id":"7","name":"Ali","cnic":"123456786","address":"nipa","email":"[email protected]","phone":"1234568"},{"id":"8","name":"Waqas","cnic":"123456748","address":"F.b area","email":"[email protected]","phone":"1234568"},{"id":"9","name":"Owais","cnic":"1234567","address":"Fb area","email":"[email protected]","phone":"12345678"}]

Но когда я запускаю свою функцию jquery, она дает мне [object Object] вместо указанных выше значений ключа.

  • 6
    Это результат .toString() для объекта. Попробуйте использовать консоль через console.log() .
  • 4
    Никогда не используйте alert для целей отладки. Используйте console.log() как уже было сказано.
Теги:

2 ответа

4
Лучший ответ

В вашем случае item фактически является array. И вы подталкиваете значения внутри него от JSON. Поэтому, чтобы просмотреть его в строчном формате,

Вы должны использовать,

alert(JSON.stringify(items));

Обращаясь к вашему JSON, вы просматриваете все объекты, поэтому вы должны Stringify те объекты, вставляя их в массив,

items.push( "<td>" + JSON.stringify(val) + "</td>" );
  • 2
    не будет работать, поскольку val - это объект, а не строка
  • 0
    Я не понял тебя, но я уверен, что кое-чему научусь у тебя.
Показать ещё 14 комментариев
3

Поскольку для строковой реализации объекта возвращается объект [object Object], вы можете использовать JSON.stringify() для его обработки. Для старого браузера вы должны включить полифиль, как json2

items.push( "<td>" + JSON.stringify(val) + "</td>" );

Демо: Fiddle - посмотрите консоль браузера


Обновить

Это должно быть просто, если вы используете .map()

var items = $.map(data, function (obj) {
    return "<tr>" + $.map(obj, function (val) {
        return '<td>' + val + '</td>'
    }).join('') + "</tr>";
});
console.log(items.join(''));

Демо: скрипка

  • 0
    Спасибо, это работает.
  • 0
    Я столкнулся с проблемой anoter: я изменил свой код на функцию 'code' getRecords () {$ .getJSON ("viewcustomers.php", function (data) {var items = []; $ .each (data, function ( key, val) {items.push (JSON.stringify (val)); console.log (items);});}); } 'код' и в моей консоли он возвращает JSON 9 раз ..
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню