x11 Posted May 1, 2021 Share Posted May 1, 2021 При создании формы нужно с сервера на фронтэнд, в браузер, отправить какую-нибудь переменную, типа имя+значение. Чтобы можно было в js-коде формы получить значение переменной по ее имени. Вот пример, где показано, как в браузер отправить некий массив "fieldsNames" и в браузере его прочитать. Т.е. мне в тот же самом коде шаблонизатора, где строится ListView, нужно получить значение этой переменной. Надеюсь, понятно пояснил. Спасибо. Quote Link to comment Share on other sites More sharing options...
x11 Posted May 3, 2021 Author Share Posted May 3, 2021 Неужели это невозможно сделать или это будет очень сложно? Quote Link to comment Share on other sites More sharing options...
zilav Posted May 5, 2021 Share Posted May 5, 2021 просто не приходит в голову кейс который ты пытаешься решить, но вообще обычно для отправки чего-то с сервера на фронт используются вебсокеты Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 5, 2021 Share Posted May 5, 2021 On 5/3/2021 at 6:13 PM, x11 said: Неужели это невозможно сделать или это будет очень сложно? А решение выше не подходит? Quote Link to comment Share on other sites More sharing options...
x11 Posted May 5, 2021 Author Share Posted May 5, 2021 К сожалению, нет, не подходит, зачем целая технология веб-сокетов, чтобы присвоить значение какой-нибудь переменной. Задача простая. Есть 2 поля "цена". И нужно в зависимости от неких условий показать доп. данные возле двух этих полей. В общем, пришлось сделать с помощью двух CALC-полей датасета. Просто это не оптимальный вариант, получается нагрузка на сервер, т.к. нужно генерировать CALC-поля и передавать их значения в браузер. Вместо передачи только двух-четырех значений. Было бы здорово, если бы была стандартная возможность в uniGUI создать какую-нибудь структуру типа RECORD или список (имя=значение) и передать их в браузер. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 5, 2021 Share Posted May 5, 2021 57 minutes ago, Sherzod said: А решение выше не подходит? On 5/2/2021 at 1:03 AM, x11 said: Вот пример, где показано, как в браузер отправить некий массив "fieldsNames" и в браузере его прочитать. ? Quote Link to comment Share on other sites More sharing options...
x11 Posted May 5, 2021 Author Share Posted May 5, 2021 да, я пытался по тому Вашему примеру, была ошибка, еще раз попробую, напишу более подробно Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 5, 2021 Share Posted May 5, 2021 ОК. Quote Link to comment Share on other sites More sharing options...
stas Posted May 6, 2021 Share Posted May 6, 2021 Если бекенд тот же сервер unigui то UniSession.AddJs(..) Если внешний то $.get или $.ajax Вообще не понял проблемы. Quote Link to comment Share on other sites More sharing options...
x11 Posted May 7, 2021 Author Share Posted May 7, 2021 On 5/5/2021 at 1:37 PM, Sherzod said: ? А как на клиенте в браузере получить значение переменной по имени? Если тут всё понятно, как получить список полей getVal: function(val, fieldName) { if (sender.fieldsNames.indexOf(fieldName) >= 0){ return val[sender.fieldsNames.indexOf(fieldName)]; } else { console.error(fieldName + " not found"); } console.log(val[sender.fieldsNames.indexOf(fieldName)]); } тот как получить значение переменной, я не знаю Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 7, 2021 Share Posted May 7, 2021 11 minutes ago, x11 said: А как на клиенте в браузере получить значение переменной по имени? Попробуйте, Obj["variableName"] Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 7, 2021 Share Posted May 7, 2021 Obj.variableName Quote Link to comment Share on other sites More sharing options...
x11 Posted May 7, 2021 Author Share Posted May 7, 2021 Вот мой код в событии создания мобильной формы: uniDBGrid1.JSInterface.JSAssign('CurrNAbbr', [uniDBGrid1.JSInterface.JSStatement('грн')]); В браузере получаю ошибку: Ajax error "грн is not defined" Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 7, 2021 Share Posted May 7, 2021 Да правильно. Получается, что Вы присваиваете CurrNAbbr = грн Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 7, 2021 Share Posted May 7, 2021 Just now, Sherzod said: CurrNAbbr = грн При использовании JSStatement Quote Link to comment Share on other sites More sharing options...
x11 Posted May 7, 2021 Author Share Posted May 7, 2021 ничего не понял... Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 7, 2021 Share Posted May 7, 2021 19 minutes ago, x11 said: uniDBGrid1.JSInterface.JSAssign('CurrNAbbr', [uniDBGrid1.JSInterface.JSStatement('грн')]); uniDBGrid1.JSInterface.JSAssign('CurrNAbbr', ['грн']); 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted May 7, 2021 Author Share Posted May 7, 2021 ошибок нет, но не работает вот кусок кода из шаблона: '<span class="tdDbgRowPrice">{[this.getCurrN()]} {[this.getVal(values, "PRICE")]}</span> ... ... ... getCurrN: function(){ if (Obj["CurrNAbbr"]){ return Obj["CurrNAbbr"]; } else { console.error("CurrNAbbr not found")}; } } на месте вопросов должна быть цена, но вывод данных, т.е. шаблон как бы обрывается и следующие строки тоже не выводятся Quote Link to comment Share on other sites More sharing options...
x11 Posted May 11, 2021 Author Share Posted May 11, 2021 On 5/7/2021 at 2:38 PM, Sherzod said: Obj["variableName"] On 5/7/2021 at 2:44 PM, Sherzod said: Obj.variableName Не работает, как видно из картинке выше. код при создании мобильной формы: dbgPurchase.JSInterface.JSAssign('CurrNAbbr', ['"грн"']); вот, видно на картинке ниже, что в консоли нет такого Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 11, 2021 Share Posted May 11, 2021 3 minutes ago, x11 said: Obj.variableName Obj - Вами используемый объект? Quote Link to comment Share on other sites More sharing options...
x11 Posted May 11, 2021 Author Share Posted May 11, 2021 obj.CurrNAbbr Вы же видите на двух снимках, что нету CurrNAbbr Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 11, 2021 Share Posted May 11, 2021 5 minutes ago, x11 said: obj.CurrNAbbr Obj - Должны указать что за объект! 14 minutes ago, x11 said: dbgPurchase.JSInterface.JSAssign('CurrNAbbr', ['"грн"']); Должно быть (JS code): MainForm.UniDBGrid1['CurrNAbbr'] Quote Link to comment Share on other sites More sharing options...
Sherzod Posted May 11, 2021 Share Posted May 11, 2021 Just now, Sherzod said: Должно быть (JS code): MainForm.UniDBGrid1['CurrNAbbr'] Или же: MainForm.UniDBGrid1.CurrNAbbr 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted May 11, 2021 Author Share Posted May 11, 2021 О, наконец таки! Спасибо. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.