Позвонить Джсону по индексу? - PullRequest
0 голосов
/ 30 августа 2009

Я хочу вернуть некоторые ошибки в мой метод jquery. Происходит то, что я делаю пост (с типом "json"), и если они получают ошибки, я хочу отобразить их обратно. Я выполняю проверку на стороне клиента, но некоторые из них являются ошибками, которые связаны с сервером (т. Е. База данных умерла или что-то, и это обновление не могло произойти).

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 30 августа 2009

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

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

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

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

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

for ( var key in obj) {
  if (obj.hasOwnProperty(key)) {
      console.log(key,obj[key]);
  }
}
0 голосов
/ 30 августа 2009

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

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

Однако вы можете взглянуть на:

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

for (var key in dataObject) {
  alert(key + " : " + dataObject[key]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...