Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разбор ответа в формате Json (https://javascript.ru/forum/misc/7380-razbor-otveta-v-formate-json.html)

Rush 29.01.2010 15:25

Разбор ответа в формате Json
 
Есть PHP скрипт возвращающий json:
$schet = $_GET['schet'];
      $link = mysql_connect("localhost","root","");
	  mysql_select_db("extjs");
	  $rs = mysql_query("SELECT nstreet as adress, no_lic as fio FROM misto where nnj = '$schet';");
      $arr = array();

	  while($obj = mysql_fetch_object($rs)) {
	  $arr[] = $obj;
      }
	  
	  if(mysql_num_rows($rs)>0)
	  {
		echo "{success: true, data:".json_encode($arr)."}";
	  }
	  else
	  {
		  echo "{success: false}";
	  }
		mysql_close($link);


Ответ Возвращается в браузер клиента в таком виде

{success: true, data:[{"adress":"9","fio":"656232"}]}

Скажите как мне в скрипте на клиентской стороне получить этот ответ и взять из него например adress.

Kolyaj 29.01.2010 15:28

eval('(' + response + ')').data[0].address
В последних версиях браузеров есть объект JSON с методами parse и stringify.

Kolyaj 29.01.2010 15:33

А еще лучше взять вот эту библиотечку, тогда во всех браузерах будет объект JSON.

Rush 29.01.2010 15:40

это мне необходимо делать например так?

success: function(action)
	      {
		 var contact = action.response.responseText;
   	         obj = Ext.util.JSON.decode(action.response.responseText);
                 var a = eval('(' + contact + ')').data[0].address;
                 // или var a = eval('(' + obj + ')').data[0].address;

	      }

Kolyaj 29.01.2010 15:46

В Ext'е есть функции для работы с JSON.
Ext.decode(action.response.responseText).data[0].address

Хотя вполне возможно, что распарсенный ответ где-нибудь в action лежит.

Rush 29.01.2010 16:17

не работает может сожмите чем помочь еще, а то у меня уже сил нет целую неделю бьюсь и не как

Kolyaj 29.01.2010 16:19

Цитата:

Сообщение от Rush
не работает

На такое обычно ответ: "Работает".

Что не работает? Где не работает? Какую ошибку выдаёт? Тут не телепаты.

Rush 29.01.2010 16:23

Делаю так
tab2.getForm().submit({
			method: 'GET',
			waitMsg: 'Подождите идет отправка данных...',
			waitTitle: 'Соединение с сервером...',
										   url:'test.php?schet'+ tab2.getForm().findField('schet').getValue(),
success: function(action)				{											 tab2.getForm().findField('adress').setValue(Ext.decode(action.response.responseText).data[0].adress);
												 tab2.getForm().findField('fio').setValue('fio');
},
										    failure:function()
{
												Ext.Msg.alert('Аутентификация пользователя','Вы ввели неправельный логин или пароль!.');
												tab2.getForm().reset();
										      }				
					
});



ответ
action.response is undefined
в строке
tab2.getForm().findField('adress').setValue(Ext.de code(action.response.responseText).data[0].adress);

B@rmaley.e><e 29.01.2010 16:29

Смотрите, что у Вас передается в action.

Kolyaj 29.01.2010 16:32

action в success передаётся вторым параметром. Первым параметром будет объект формы. И у action есть свойство result, которое
Цитата:

The decoded response object containing a boolean success property and other, action-specific properties.


Часовой пояс GMT +3, время: 16:08.