2014-01-13 4 views
0

Привет У меня следующий АЯКС функция ..

  $.ajax({ 
       url: './sales/cat/salesCat' 
       , target: null 
       , type: "get" 
       , dataType: "json" 
       , data: { 

        locale: LOCALE 
       } 
       , success: function (object) { 
        $.each(object, function (key, value) { 
         alert(key + ":" + value); 
        }) 
       } 
     }); 

Он возвращает следующий результат

{ 
    "success": true, 
    "totalCount": 2, 
    "data": [ 
    { 
     "East Division": "Yearly Sales" 
     "West Division": "Yearly Sales" 
    } 
    ] 
} 

проблема, я пытаюсь читать возвращаемые значения для использования Это. Когда функция успеха выполняет и в моей готовности я получаю предупредительное сообщение

  data:[object Object] 

Пожалуйста, дайте мне знать, как исправить

  $.each(object, function (key, value) { 
        alert(key + ":" + value); 
       }) 

Так предупреждение может отображаться, например, Восточный отдел: ежегодные продажи Спасибо за вашу помощь ,

+2

Не используйте 'alert' для отладки кода, используйте' console.log'. '[object Object]' является строковым объектом, так как 'alert' принимает только строки. – elclanrs

+0

Возможный дубликат [jQuery - как рекурсивно перебирать вложенные свойства объекта?] (Http://stackoverflow.com/questions/12295494/jquery-how-to-recursively-loop-over-an-objects-nested-properties) – Blazemonger

+0

Прежде всего, вы пропустили одну запятую, во-вторых, это происходит потому, что она застревает в массиве данных. –

ответ

0

Это потому, что при использовании alert() для вывода объекта объект преобразуется в строку. Объектом в виде строки является «[object Object]».

Вместо этого вы должны использовать console.log(), чтобы вывести объект в JavaScript console вашего браузера.

var data = { key: "value" }; 
data.toString(); // "[object Object]" 
data; // Object { key: "value" } 

Другая проблема у вас есть то, что ваш data ответ отсутствует , и, таким образом, недействительны:

"data": [ 
    { 
     "East Division": "Yearly Sales" // <--- No comma 
     "West Division": "Yearly Sales" 
    } 
] 

Это выбросит:

SyntaxError: Unexpected token :

+0

Спасибо за замечание и комментарий.Я забыл добавить его во время копирования в вопросе. –

1

данных, которые вы получаете назад - объект, следовательно, ваш data:[object Object] ответ в предупреждении.

Чтобы отладить, используйте вместо этого console.log() и посмотрите на консоль вашего браузера (например, Chrome: инструменты отладки F12).

Если вы хотите, чтобы получить первое значение вашего объекта данных в этом случае, вы можете ссылаться на него один из двух способов:

data["East Division"] 

Или

data[0] 

Вы также можете использовать рекурсию сделайте это, см. как Loop through an array in JavaScript

+0

Я думаю, он хочет, чтобы рекурсивно перебирать объект, а не ссылаться на каждый. +1 за поддержку – Fred

0

Вы можете перевести его в строку JSON (для отладки явно):

alert(JSON.stringify(object)); 
Смежные вопросы