Проблема при преобразовании HTML в JSON - PullRequest
2 голосов
/ 29 декабря 2010

У меня есть div, который содержит это:

<div id="hidLocsJsonForAutoComplete" style="display:none;">[{"id":1,"desc":"Amazon","name":"amazon"},{"id":2,"desc":"Apple Bees","name":"applebees"},{"id":3,"desc":"Babys r Us","name":"babysrus"},{"id":4,"desc":"Costco","name":"costco"},{"id":5,"desc":"Concord Produce","name":"concordproduce"},{"id":6,"desc":"Grocery Outlet","name":"groceryoutlet"},{"id":7,"desc":"New India Bazar","name":"newindiabazar"},{"id":8,"desc":"SubWay","name":"subway"},{"id":9,"desc":"Walmart","name":"walmart"}]</div>

, а затем в разделе сценария у меня есть

var jsonLocs = $('#hidLocsJsonForAutoComplete').html();

Теперь jsonLocs [0] возвращает

[

вместо

{"id":1,"desc":"Amazon","name":"amazon"}

Я понимаю, что jsonLocs считается строкой. Но как мне получить первый объект Json в этом массиве?

Ответы [ 4 ]

3 голосов
/ 29 декабря 2010

jsonLocs содержит объект String, необходимый для анализа внутреннего HTML как json.Попробуйте это:

var jsonLocs = $.parseJSON($('#hidLocsJsonForAutoComplete').html()); 
1 голос
/ 29 декабря 2010

Не бери в голову, получил ответ !! :)

var jsonLocs = eval($('#hidLocsJsonForAutoComplete').html());

сотворил магию. Но интересно, если это самый эффективный / рекомендуемый способ сделать это.

1 голос
/ 29 декабря 2010

Если вы используете jQuery 1.4.1 или новее, вы можете использовать встроенную в jQuery .parseJSON() функцию:

var jsonLocs = $.parseJSON($('#hidLocsJsonForAutoComplete').html());

В старых версиях вы можете просто использовать eval (и подвергать себя потенциальным проблемам с безопасностью и т. Д., Делая это неправильно, но ..):

var jsonLocs = eval('('+$('#hidLocsJsonForAutoComplete').html()+')');
0 голосов
/ 29 декабря 2010

Переменная jsonLocs - это просто строка, поэтому, когда вы индексируете первый элемент, вы получаете первый символ строки.Что вам нужно сделать, это разобрать значение HTML в объект Javascript, а затем взять первый элемент.

Итак, вам нужно будет сделать что-то вроде этого:

var jsonLocs = JSON.parse($('#hidLocsJsonForAutoComplete').html());

И, конечно же, для браузеров, которые не поддерживают собственный анализ JSON, вы можете использовать замечательную библиотеку Дугласа Крокфорда (или использовать eval, если вы хотите жить опасно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...