Вход

Просмотр полной версии : jqGrid. Заполнение select значениями из запроса.


dl007
14.10.2010, 16:17
Не откажите в помощи plz чайнику....а то уже совсем отчаялся! :-)
В JQGrid необходимо сделать заполнение selecta значениями из запроса.

colModel:[
{name:'kod_podr', edittype:'select', formatter:'select', editoptions:{value:GetDicPodr()}, editable:true}],

function GetDicPodr() { // загружаем значения в Select
StrkDicPodr="";
$.getJSON("ic/getd_dic.php", null, function(data) {
if (data != null) {
$.each(data, function(i,dt){
StrkDicPodr=StrkDicPodr+dt.isn+":"+dt.name+";";
});
}
});
return StrkDicPodr;
}

И все вроде бы прекрасно, но! - проблема в том, что при выходе из функции $.getJSON() в переменной StrkDicPodr восстанавливается значение, заданное ей в строке №5. Следовательно return возвращает пустую строку.
Как передать данные из функции $.getJSON() в функцию GetDicPodr()?
...уже всю голову сломал...

walabyn
18.10.2010, 00:52
а почему не
var StrkDicPodr="";
и почему не
StrkDicPodr+=StrkDicPodr+dt.isn+":"+dt.name+";";

dl007
18.10.2010, 10:21
а почему не
var StrkDicPodr="";
Так уже пробовал. Повторюсь, я чайник в JavaScript, и в одной документации вычитал, что определение переменной без "Var" делает ее глобальной...


и почему не
StrkDicPodr+=StrkDicPodr+dt.isn+":"+dt.name+";";
А какая раздница? ...впрочем так тоже не работает:(.
Здесь, что-то связанное с видимостью переменных. Пока сообразить не могу...

walabyn
18.10.2010, 11:34
в js перед появлением новой переменной всегда надо ставить var, а по случаю
StrkDicPodr+=StrkDicPodr+dt.isn+":"+dt.name+";";
я проглядел что значение приплюсовывается, извините, плюс можно убрать.
вызывается ли в php-файле json_encode? и поддерживается ли он на хостинге? по js вроде все верно тогда

dl007
18.10.2010, 16:31
вызывается ли в php-файле json_encode? и поддерживается ли он на хостинге? по js вроде все верно тогда
Да, json_encode вызывается. И вообще StrkDicPodr прекрасно формируется. Просто ее значение теряется при выходе из функции $.getJSON().
Даже не теряется а восстанавливается прежнее значение, заданное в строке №5. Т.е если в строке №5 записать
var StrkDicPodr="777";
то return в строке №13 возвратит: "777". Мелочь какая то, а сообразить не могу!:(