Jump to content

Как отправить на клиента в бразуер значение переменной?


x11

Recommended Posts

При создании формы нужно с сервера на фронтэнд, в браузер, отправить какую-нибудь переменную, типа имя+значение.

Чтобы можно было в js-коде формы получить значение переменной по ее имени.

Вот пример, где показано, как в браузер отправить некий массив "fieldsNames" и в браузере его прочитать.

Т.е. мне в тот же самом коде шаблонизатора, где строится ListView, нужно получить значение этой переменной.

Надеюсь, понятно пояснил.

Спасибо.

 

 

 

Link to comment
Share on other sites

просто не приходит в голову кейс который ты пытаешься решить, но вообще обычно для отправки чего-то с сервера на фронт используются вебсокеты 

Link to comment
Share on other sites

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

Задача простая. Есть 2 поля "цена". И нужно в зависимости от неких условий показать доп. данные возле двух этих полей.

В общем, пришлось сделать с помощью двух CALC-полей датасета. Просто это не оптимальный вариант, получается нагрузка на сервер, т.к. нужно генерировать CALC-поля и передавать их значения в браузер. Вместо передачи только двух-четырех значений.

Было бы здорово, если бы была стандартная возможность в uniGUI создать какую-нибудь структуру типа RECORD или список (имя=значение) и передать их в браузер.

 

 

Link to comment
Share on other sites

57 minutes ago, Sherzod said:

А решение выше не подходит?

 

On 5/2/2021 at 1:03 AM, x11 said:

Вот пример, где показано, как в браузер отправить некий массив "fieldsNames" и в браузере его прочитать.

?

Link to comment
Share on other sites

да, я пытался по тому Вашему примеру, была ошибка, еще раз попробую, напишу более подробно

Link to comment
Share on other sites

Если бекенд тот же сервер unigui то UniSession.AddJs(..)

Если внешний то $.get или $.ajax 

Вообще не понял проблемы.

Link to comment
Share on other sites

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)]);	
					}

 

тот как получить значение переменной, я не знаю

Link to comment
Share on other sites

Вот мой код в событии создания мобильной формы:

uniDBGrid1.JSInterface.JSAssign('CurrNAbbr', [uniDBGrid1.JSInterface.JSStatement('грн')]);

В браузере получаю ошибку: Ajax error "грн is not defined"

Screenshot_5.jpg

Link to comment
Share on other sites

ошибок нет, но не работает

вот кусок кода из шаблона:

'<span class="tdDbgRowPrice">{[this.getCurrN()]} {[this.getVal(values, "PRICE")]}</span>
  
...
...
...

getCurrN: function(){
	if (Obj["CurrNAbbr"]){
		return Obj["CurrNAbbr"];
	} else {
		console.error("CurrNAbbr not found")};
	}
}

 

на месте вопросов должна быть цена, но вывод данных, т.е. шаблон как бы обрывается и следующие строки тоже не выводятся

Screenshot_8.jpg

Link to comment
Share on other sites

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', ['"грн"']);

 

вот, видно на картинке ниже, что в консоли нет такого

 

 

Screenshot_3.jpg

Screenshot_4.jpg

Link to comment
Share on other sites

5 minutes ago, x11 said:

obj.CurrNAbbr

Obj - Должны указать что за объект!

14 minutes ago, x11 said:

dbgPurchase.JSInterface.JSAssign('CurrNAbbr', ['"грн"']);

 

Должно быть (JS code):

MainForm.UniDBGrid1['CurrNAbbr']

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...