Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2013, 14:16
Новичок на форуме
Отправить личное сообщение для next768 Посмотреть профиль Найти все сообщения от next768
 
Регистрация: 26.10.2013
Сообщений: 4

Помогите распарсить JSON
Приветствую всех!
В js недавно, поэтому прошу помощи.
Пишу регистрацию на сайте, и через ajax делаю выбор страны,региона,города.

Есть вот такой вот скрипт на стороне клиента:
function loadRegion(select) {
   $.post("/ajax/reg", {selectId: select.value, selectType: 'region'},
      function(data){
         var json_regions = JSON.decode(data.data);
         alert(jon_regions);
      }, 'json');
}

Функция loadRegion() вызывается при выборе select:
<select name='country' id='sel12' onchange="loadRegion(this)">
   <option valye='null'>Выберите страну</option>
   <option valye="1">Россия</option>
   <option valye="2">Америка</option>
</select>


Сервер возвращает мне список всех регионов принадлежащим выбранной стране в формате JSON:
{
  "status":true,
  "message":null,
  "data":[
     {
        "id":"4312",
        "name":"\u041c\u043e\u0441\u043a\u0432\u0430 \u0438 \u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u043e\u0431\u043b."
     },
     {
        "id":"4925",
        "name":"\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044c"
      }
  ]
}


В firebug пишет: JSON.decode is not a function
Подскажите пожалуйста как мне добраться до полей name и id?

Последний раз редактировалось next768, 26.10.2013 в 14:33.
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2013, 14:20
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Что-такое JSON.decode? Может JSON.parse?
Тебе аргументом уже объект отдают, если ты передал последним параметром $.post'а строку 'json', ничего не нужно уже парсить.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 26.10.2013, 14:40
Новичок на форуме
Отправить личное сообщение для next768 Посмотреть профиль Найти все сообщения от next768
 
Регистрация: 26.10.2013
Сообщений: 4

Цитата:
Что-такое JSON.decode?
Гуглил, и нашел этот способ.
Цитата:
Может JSON.parse?
Его тоже пробовал.

Цитата:
ничего не нужно уже парсить.
Ок. Скажите тогда как мне добраться до полей name и id?

P.S Гуглил по этому поводу очень много, но т.к только начал учить js не понимаю половины примеров в интернете. Прошу помочь мне
Ответить с цитированием
  #4 (permalink)  
Старый 26.10.2013, 14:55
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

data.name?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 26.10.2013, 15:29
Новичок на форуме
Отправить личное сообщение для next768 Посмотреть профиль Найти все сообщения от next768
 
Регистрация: 26.10.2013
Сообщений: 4

Цитата:
data.name?
Нет.
У меня же там несколько элементов.
Вся задача состоит в том чтобы все элементы, которые мне возвращает сервер вывести в следующий select.

Вот html двух селектов:
<td class="form-reg-table-td step-1">
                        <div>
                            <label>Страна</label>
                            <select name='country' id='sel12' onchange="loadRegion(this)">
                                <option valye='null'>Выберите страну</option>
                                <?foreach($countrys as $country):?>
                                    <option value="<?=$country->id?>"><?=$country->name?></option>
                                <?endforeach?>
                            </select>
                        </div>
                    </td>
                    <td class="form-reg-table-td step-1">
                        <div>
                            <label>Область</label>
                            <select class="chzn-select" name='region'>

                            </select>
                        </div>
                    </td>


Мне нужно чтоб при выборе страны в select с id='region' подгружался список регионов, принадлежащих выбранной стране.


Сервер у меня возвращает 3 параметра:
status - статус выполнения запроса (если допустим была запрошена не существующая запись то вернет false)
message - сообщение о ошибке (допустим запрашиваемой записи нет, и сервер вернет еще сообщение "Данной записи не существует")
data - данные, если они нужны в ответ.
* Это у меня организована так архитектура приложения. На все запросы ajax возвращается 3 параметра.


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

Если бы это было бы php, то выглядело так бы:

$array_json = array (
    'status' => true,
    'message' => null,
    'data' => array (
        '1' => array (
            'name' => 'Московская область',
            'id' => '123'
        ),
        '2' => array (
            'name' => 'Ростовская область',
            'id' => '321'
        )
    )
);

И разобрал бы я его так:
foreach ($array_json['data'] as $json_elem) {
    echo "<option valye='" . $json_elem['id'] . "'>" . $json_elem['name'] . "</option>"
}

P.S Просто с JSON форматом работаю первый раз..
Ответить с цитированием
  #6 (permalink)  
Старый 26.10.2013, 15:40
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Переименуй data в response, если уважаешь логику.
И тогда response.data[1].name, response.data[2].name и тд.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 26.10.2013, 15:45
Новичок на форуме
Отправить личное сообщение для next768 Посмотреть профиль Найти все сообщения от next768
 
Регистрация: 26.10.2013
Сообщений: 4

То что нужно! Благодарю
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите распарсить некую xml vladimir7517 jQuery 19 18.10.2013 12:33
помогите распарсить vladimir7517 Общие вопросы Javascript 2 18.10.2013 10:14
Распарсить JSON при помощи jQuery fennick AJAX и COMET 3 24.08.2011 19:21
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
Ошибка в jquery.forms ? Помогите разобраться. Ксандер jQuery 10 26.08.2009 18:39