Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   проблема сombo и ajax (https://javascript.ru/forum/extjs/14338-problema-sombo-i-ajax.html)

avaVusal 11.01.2011 20:17

проблема сombo и ajax
 
Здрасти.Ext_js начал изучать недавно.Пытаюсь написать простую программу,надо в combobox из базы загрузить информацию,но в результате в combo ничего нет.Помогите пожалуйста.Вот код javascript:

Ext.onReady(function(){
Ext.QuickTips.init();
var genres = new Ext.data.SimpleStore({
reader: new Ext.data.JsonReader({
fields:['id','genre_name'],
root:'rows'
}),
proxy:new Ext.data.HttpProxy({
url:'submit.php'
})
});

genres.load();

var movie_form = new Ext.form.FormPanel({
url:'submit.php',
renderTo:document.body,
frame:true,
title:'Movie Information Form',
width:250,
items:[{
xtype:'combo',
name:'genre',
fieldLabel:'Genre',
mode:'local',
store:genres,
displayField:'genre',
width:120
}]
});

});

DooMer 12.01.2011 13:17

что с сервера приходит ?

avaVusal 12.01.2011 18:17

{rows:[{"id":"1","genre_name":"2323"},{"id":"2","genre_na me":"sdqer"}]}

mycoding 12.01.2011 18:19

Надо бы вот так
Цитата:

{success:true,rows:[{"id":"1","genre_name":"2323"},{"id":"2","genre _na me":"sdqer"}]}

DooMer 13.01.2011 13:41

displayField:'genre'
мб
displayField:'genre_name' ?

avaVusal 13.01.2011 14:40

не помогает,поставил автолоад:

Ext.onReady(function(){
Ext.QuickTips.init();
var genres = new Ext.data.SimpleStore({
reader: new Ext.data.JsonReader({
fields:['id','genre_name'],
root:'rows'
}),
proxy:new Ext.data.HttpProxy({
url:'submit.php'
}),
autoLoad:true
});


var movie_form = new Ext.form.FormPanel({
url:'submit.php',
renderTo:document.body,
frame:true,
title:'Movie Information Form',
width:550,
items:[{
xtype:'combo',
name:'genre',
fieldLabel:'Genre',
mode:'local',
store:genres,
displayField:'genre_name',
width:120
}]
});

});

а вот php код:

<?php

здесь соединение к базе....


$result = mysql_query('SELECT id,genre_name FROM genres');
while($obj = mysql_fetch_object($result)) {
$arr[] = $obj;
}

echo '{success:true,rows:'.json_encode($arr).'}';
?>

вот ответ с сервера:

{success:true,rows:[{"id":"1","genre_name":"2323"},{"id":"2","genre_na me":"sdqer"}]}

avaVusal 13.01.2011 15:23

получилось,изменил код на такой:


Ext.onReady(function(){
Ext.QuickTips.init();
var genres = new Ext.data.JsonStore({
url:'submit.php',
root:'rows',
fields:['id','genre_name'],
autoLoad:true
});

var movie_form = new Ext.form.FormPanel({
url:'submit.php',
renderTo:document.body,
frame:true,
title:'Movie Information Form',
width:550,
items:[{
xtype:'combo',
name:'genre',
fieldLabel:'Genre',
mode:'local',
store:genres,
displayField:'genre_name',
width:120
}]
});

});

mycoding 13.01.2011 17:13

Что то с первого раза не заметил.
Глянь на ответ сервера по внимательней
Цитата:

{success:true,rows:[{"id":"1","genre_name":"2323"},{"id":"2","genre _na me":"sdqer"}]}
Пробел у второго значения в
Цитата:

genre_na me
Другие браузеры может такое и нормально воспринимают, а вот
ie к такому относится как к ошибке.

Ex_Soft 14.01.2011 10:25

Цитата:

Сообщение от avaVusal (Сообщение 87847)
получилось,изменил код на такой

Да у меня и первоначальный вариант отработал с пол-пинка:
function ShowForm1()
{
	var
		ComboBox1Store=new Ext.data.Store({
			reader: new Ext.data.JsonReader({
				fields: ["ID", "VAL"],
				root: "rows"
			}),
			proxy: new Ext.data.HttpProxy({
				url: "DataSourceHandler.aspx"
			})
		});
		
	ComboBox1Store.load();

	var	
		f = new Ext.form.FormPanel({
			region: "center",
			url: "FormHandler.aspx",
			frame: true,
			items: [{
				xtype: "combo",
				name: "ComboBox1",
				fieldLabel: "ComboBox1",
				mode: "local",
				store: ComboBox1Store,
				valueField: "ID",
				displayField: "VAL"
			}]
		}),
		w = new Ext.Window({
			layout: "border",
			title: "Form",
			height: 300,
			width: 300,
			items: [f]
		});

	w.show();
}

Тока, вот, разве шо заместо за'deprecated'ного Ext.data.SimpleStore - Ext.data.Store

BTW,
Цитата:

Сообщение от mycoding (Сообщение 87861)
Пробел у второго значения

Поскольку все это рожается посредством
echo '{success:true,rows:'.json_encode($arr).'}';

и первое значение в норме, IMHO, это издержки copy -> paste...


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