2009-08-30 4 views
0

Я хочу вернуть некоторые ошибки в мой метод jquery. То, что происходит, я делаю сообщение (с типом «json»), и если они получат ошибки, я хочу показать им ошибку. Я выполняю проверку на стороне клиента, но некоторые из них - это ошибки, похожие на связанные с сервером (например, сбой базы данных или что-то еще, и это обновление не может произойти).Позвоните Json по индексу?

В любом случае может быть несколько ошибок, и я хочу вернуть их всех за один раз.

Так что единственный способ, которым я действительно знаю, как использовать Json, но теперь я получаю объект json, я хочу получить все поля из него. Я не хочу называть это своим именем, хотя, поскольку я хочу использовать те же методы для всех своих методов, и у каждого есть разные имена.

Так что, если бы я мог назвать это по индексу, было бы гораздо меньше печатать.

Могу ли я это сделать?

ответ

2

Поскольку вы используете JQuery, вы можете использовать $.each перебрать свойства объекта, например:

var obj = { one:1, two:2, three:3, four:4, five:5 }; 

jQuery.each(obj, function(key, val) { 
     console.log(key,val); 
}); 

Для объектов JQuery internally выполняет оператор for...in, который не перебирает встроенные свойства, однако у вас могут быть проблемы, если Object.prototype расширен, поскольку эти расширенные члены также будут итерации.

не является общей практикой продлить Object.prototype, но, чтобы избежать проблем, вы можете использовать функцию hasOwnProperty, чтобы убедиться, что свойство существует непосредственно на объекте итерируемым:

for (var key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     console.log(key,obj[key]); 
    } 
} 
0

JSON - это не что иное, как еще один язык разметки для описания сложных структур данных. JSON анализируется в javascript-структурах данных и может представлять объекты, массивы или просто строку теоретически неограниченной глубины.

Не зная, если ваша структура JSON состоит из массивов, объектов или {} конструкций, трудно сказать, можете ли вы это сделать.

Однако, вы можете посмотреть на:

var dataObject = { key1 : "error1", 
        key2: "error2" 
       }; 

for (var key in dataObject) { 
    alert(key + " : " + dataObject[key]); 
} 
+1

Вы должны быть очень осторожны, при использовании этого метода - http://www.cosmocode.de/en/blog/detman/2006-06/27-json-and-for-each-pitfalls – Sampson

+0

Да, я, вероятно, должен был упомянуть проблему, когда прототип имеет был расширен. Я был укушен этим в прошлом. –

+0

Ну, я использую библиотеку json.net. Он превращает его в строку. – chobo2

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