scorpion-ds
Новичок
ExtJS взаимодействие с PHP на Ajax
Суть такая, работаю с элементом Ext.Toolbar, там через параметр items, передается структура меню и его события, такого вида:
(у меня немного сложней, но суть такая)
так вот, эту структуру я хочу получать, не встраивая все это в код JS, а при помощи ajax, с учетом уровня доступа пользователя.
Для этого я эту структуру возвращаю с сервера в виде JSON, чем по сути и является эта структура, все получалось, пока я не дошел до реализации событий (параметр handler), передавая сформированный на PHP код, JS его виде как строку, а не функцию, это то вполне логично, но можно ли как-то обойти это?
Сейчас я делаю отдельную обработку на JS полученного результата от сервера, но тут столкнулся с проблемой, что не могу передать параметры в:
"handler:function(){
*сюда*
}"
внешние переменные JS там не видны, вернее, видна последняя переданная в цикле переменная, вот код:
Ни как не разберусь, как нормально реализовать генерацию этого меню.
Суть такая, работаю с элементом Ext.Toolbar, там через параметр items, передается структура меню и его события, такого вида:
Код:
items:[{
text:'Добавить',
icon: 'images/icons/fam/add.png',
handler:function(){
alert('Добавить');
}
},{
text:'Удалить',
icon: 'images/icons/fam/delete.gif',
handler:function(){
alert('Удалить');
}
}]
так вот, эту структуру я хочу получать, не встраивая все это в код JS, а при помощи ajax, с учетом уровня доступа пользователя.
Для этого я эту структуру возвращаю с сервера в виде JSON, чем по сути и является эта структура, все получалось, пока я не дошел до реализации событий (параметр handler), передавая сформированный на PHP код, JS его виде как строку, а не функцию, это то вполне логично, но можно ли как-то обойти это?
Сейчас я делаю отдельную обработку на JS полученного результата от сервера, но тут столкнулся с проблемой, что не могу передать параметры в:
"handler:function(){
*сюда*
}"
внешние переменные JS там не видны, вернее, видна последняя переданная в цикле переменная, вот код:
Код:
function InitTopMenu(response) {
var tm = Ext.util.JSON.decode(response.responseText);
var menu = new Array();
for(var i=0;i<=(tm.length-1);i++) {
var sub_menu = new Array();
var p = '';
for(var j=0; j<=(tm[i].menu.length - 1); j++) {
if(tm[i].menu[j].handler != undefined) {
p = tm[i].menu[j].handler;
//alert(p);
sub_menu[j] = {"text" : tm[i].menu[j].text, "handler" : function() { alert(p); }};
}
else
sub_menu[j] = {"text" : tm[i].menu[j].text, "disabled" : true};
}
menu[i] = {"text" : tm[i].text, "menu" : sub_menu};
}
var toptoolbar = new Ext.Toolbar({
renderTo: 'top_menu',
items: menu
});
}