Проблемы с возвратом ответа с сервера в JSON

Kaaron

Новичок
Проблемы с возвратом ответа с сервера в JSON

Есть код
PHP:
$schet = $_GET['schet'];
      $link = mysql_connect("localhost","root","");
	  mysql_select_db("extjs");
	  $rs = mysql_query("SELECT nstreet as adress, fio, nnj, nnw, nne, nng, nnjko, id_adr as schet FROM misto where id_adr = '$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":"","nnj":"6482","nnw":"08284","nne":"090136023","nng":"75817","nnjko":"44025","schet":"108096"}]}

может кто-то подскажет почему
 

dimagolov

Новичок
у тебя data это массив в котором один элемент объект со свойствами adress, fio, и т.д.
 

Kaaron

Новичок
Автор оригинала: dimagolov
у тебя data это массив в котором один элемент объект со свойствами adress, fio, и т.д.
Ну и что я так и не понял как решить эту проблему и почему и меня данные не попадают в Json ответ
 

dimagolov

Новичок
сделай alert(respond.data) и посмотри попадает или нет.
просто обращаться нужно так: respond.data[0].adress и т.д.


подожди. а ты eval того отклика, который показал, делаешь? ajax-то получает строку в ответ, которую нужно как-то обрабатывать, чтобы получить объект.
 

Kaaron

Новичок
Мой JavaScript


var tab2 = new Ext.FormPanel({
labelAlign: 'top',
title: 'Прием платежей',
bodyStyle:'padding:5px',
height: getClientHeight() - 235,
width: getClientWidth() - 25,
x: 5,
y: 30,
frame: true,
items: [{
xtype:'tabpanel',
plain:true,
activeTab: 0,
height:300,
defaults:{bodyStyle:'padding:10px'},
items:[{
title:'Персональные данные клиента',
layout:'form',
items: [
{
items: [{
layout: 'column',
items: [poisk, PersonalData, Schetainorg, Schetainorg2]
},
{
xtype: "button",
text: "Поиск пользователя",
handler: function()
{
tab2.getForm().submit({
method: 'GET',
waitMsg: 'Подождите идет отправка данных...',
waitTitle: 'Соединение с сервером...',
url:'test.php?schet'+ tab2.getForm().findField('schet').getValue(),
success: function(form, action)
{
alert(respond.data)
tab2.getForm().findField('adress').setValue(Ext.decode(action.response.responseText).data[0].adress);
tab2.getForm().findField('fio').setValue(Ext.decode(action.response.responseText).data[0].fio);
tab2.getForm().findField('nnw').setValue(Ext.decode(action.response.responseText).data[0].nnw);
tab2.getForm().findField('nnj').setValue(Ext.decode(action.response.responseText).data[0].nnj);
tab2.getForm().findField('nng').setValue(Ext.decode(action.response.responseText).data[0].nng);
tab2.getForm().findField('nnjko').setValue(Ext.decode(action.response.responseText).data[0].nnjko);
tab2.getForm().findField('nnotop').setValue(Ext.decode(action.response.responseText).data[0].nnjko);
tab2.getForm().findField('nne').setValue(Ext.decode(action.response.responseText).data[0].nne);
tab2.getForm().findField('nne').setValue(Ext.decode(action.response.responseText).data[0].schet);
},
failure:function()
{
Ext.Msg.alert('Аутентификация пользователя','Вы ввели неправельный логин или пароль!.');
tab2.getForm().reset();
}

});
}
}
]
}

]
},{
title:'Phone Numbers',
layout:'form',
defaults: {width: 230},
defaultType: 'textfield',

items: [{
fieldLabel: 'Home',
name: 'home',
value: '(888) 555-1212'
},{
fieldLabel: 'Business',
name: 'business'
},{
fieldLabel: 'Mobile',
name: 'mobile'
},{
fieldLabel: 'Fax',
name: 'fax'
}]
},{
cls:'x-plain',
title:'Biography',
layout:'fit',
items: {
xtype:'htmleditor',
id:'bio2',
fieldLabel:'Biography'
}
}]
}],

buttons: [{
text: 'Сохранить'
},{
text: 'Отмена',
}]
});

-~{}~ 30.01.10 17:08:

Я делаю так и все работает с данными которые являются числами но то что являектся символами просто игнорируются. Кто-то подскажет почему

tab2.getForm().findField('adress').setValue(Ext.decode(action.response.responseText).data[0].adress);
 

dimagolov

Новичок
Kaaron, вот когда ты поймешь что же у тебя ф-я получает из пхп и в каком виде, тогда будет какой-то толк. а просто вставлять бездумно то, что тебе говорят, нельзя.

п.с. есть сильное подозрение, что нужно смотреть ф-ю decode на предмет того, что она считает валидными данными. ну и вызывать ее имеет смысл только один раз, а потом работать с полученным объектом.
 

Kaaron

Новичок
там проблема с кодировками скорее всего, вернее точно т.к если в базе будут не windows - 1251 все работает
 

Mols

Новичок
http://ua2.php.net/manual/en/function.json-encode.php
----------
This function only works with UTF-8 encoded data.
----------
В функцию отдаешь данные в UTF-8 - на выходе получаешь валидный json. (jQuery Prototype - понимают и обрабатывают нормально)
http://ua2.php.net/manual/en/function.iconv.php - может помочь
 

Wicked

Новичок
рекомендация:
PHP:
-echo "{success: true, data:".json_encode($arr)."}";
+echo json_encode(array('success' => true, 'data' => $arr));
-echo "{success: false}";
+echo json_encode(array('success' => false));
 
Сверху