С Новым годом! Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 28.05.2005
Сообщений: 347

src.Request_Content(0) не работает через AJAX и еще пару вопросов.

11.01.2017, 09:51. Показов 4138. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Давно я не брал в руки шашку).

Жили, не тужили, ломились напрямую к серверу агентом из WQS с перезагрузкой web страницы и все замечательно работало. Моргало, правда). Но задумалось тут полностью перейти на jQuery ajax. И началось...
1. Не работает src.Request_Content(0) при запуске из конструкции JS $.post(UpdateCart?OpenAgent. Request_Content тупо пустой. Я конечно, запихнул args через argsArray = explode(src.Query_String(0), "&"), и сделал так $.post(UpdateCart?OpenAgent+args, но там есть ограничение по размеру урла. Его можно подкрутить через настройку в сервере по http://www-01.ibm.com/support/docview.wss?uid=swg21209339, но как вернуть Request_Content?

2. Был старый агент на LS пускаемый по тупо-сабмиту на форме и в котором работала конструкция:
Print(script common.js)
Print(script _doSetCookie(shopcart) & Cstr(userdoc.UniversalID)
(я не смог загрузить ее полным текстом в пост из-за какого-то дебильного алерта на форуме с ахтунгом "This website is using a security service to protect ytself from online attacks.")
Куки отказались писаться при запуске через AJAX вот так $.post(AddToCart?OpenAgent, Пришлось переписывать агент LS на $.post(AddToCartAJAX?OpenAgent+args + &SessionID= + sessionID+&rnds=+rndsess, и дальнейшее в котром ищу прописанное в агенте по параметрам rndsess. И дальше

Code
1
2
3
4
$.getJSON(doValidateUNIDjson?openpage+&rnds=+rndsess;
function(resp){
var respunid = resp.unid;
if ( respunid != null) {_doSetCookie(shopcart, respunid) };
Может оно и к лучшему, но ЧЯДНТ?

3. При подсчете в JS вот такой конструкции:

Code
1
2
3
4
5
var boxes = $("form[name=Cart]  input:checkbox:enabled");
isboxes.each(function(){
chboxes = chboxes+1;
args = args + "&" + $(thys).attr(name)+=1;
});
chboxes возвращает максимум 50. Но у меня бывает и больше чекбоксов. Это ограничение где порылось? Заткнул так

Code
1
2
3
 if ( chboxes >=50 ) {
$.msgbox(Более 50 товаров удалить сразу нельзя.,4);
boxes.removeAttr(checked);
ку1: Сервер 8.5.2. Клиент 7.0.4. jquery-1.12.4.min.js Если что. Про xpages даже слышать не хочу.
ку2: Попутно был найден и заюзан неплохой WebSession class originally from http://tanny.ica.com/ICA/TKO/t... gent-class, но в нем нет метода прописывания кук в агенте LS. Может кто доделывал?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2017, 09:51
Ответы с готовыми решениями:

процессы и ещё пару вопросов
привет всем,в общем помогите пожалуйста ,как можно получить список всех запущенных процессов? и ещё вопрос есть некая функция...

Ввод вывод из/в файлы(и еще пару вопросов)
Знаю парочку способов ввести/вывести данные из файла не знаю какой из них какой! :) В общем я отпишу мысли, а вы скажите верны ли они, у...

пару вопросов по ASP.NET AJAX
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> Вот эту штуку куда именно добавлять надо? Добавлено...

9
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
11.01.2017, 10:26
Цитата Сообщение от NetWood
Может кто доделывал?
Нашел вот что, но не проверял. Думаю, Вы сможете это подкрутить к Вашему классу.

.SpoilerTarget">Спойлер: Код


LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Function getCookieVal( cookie As String, thysname As String) As String
Dim prefix As String
prefix = thysname + "="
Dim begin As Integer
Dim ending As Integer
begin = Instr(cookie, "; " + prefix)
If begin = 0 Then
begin = Instr(cookie, prefix)
If begin = 0 Then
getCookieVal = ""
Exit Function
End If
Else
begin = begin +2
End If
ending = Instr(begin, cookie, ";") - 1
If ending = -1 Then
ending = Len(cookie)
End If
getCookieVal = unescape(Mid$(cookie, begin+Len(prefix), ending - begin -Len(prefix)+1))
End Function
 
Sub setCookie(doc As NotesDocument, compName As String, compValue As String, adjYear As Integer, adjHour As Integer)
uses a print statement to set the cookie
uses adjYear and adjHour to set the expiry time of the cookie.
If the cookie is needed for the one particular session set adjHour to 1, then the cookie is active for an hour
If you want to expire a cookie, use a negative number for either adjYear or adjHour.
Dim thystyme As NotesDateTime
Dim gmttime As NotesDateTime
Dim gmtvar As Variant
Dim cooktime As String
Set thystyme = New NotesDateTime("")
Call thystyme.SetNow
If adjHour <> 0 Then
Call thystyme.AdjustHour(adjHour)
End If
If adjYear <> 0 Then
Call thystyme.AdjustYear(adjYear)
End If
Set gmttime = New NotesDateTime(Left$(thystyme.GMTTime, Len(thystyme.GMTTime)-4))
gmtvar = gmttime.LSLocalTime
cooktime = Format(gmtvar, "dddd")+ ", " + Format(gmtvar, "dd")+ "-" + Format(gmtvar, "mmm") + "-" + Format(gmtvar, "yyyy") +_
" " + Format(gmtvar, "hh:mm:ss") + " GMT"
compName = escape(compName)
compValue = escape(compValue)
Dim dbpath As String
dbpath = Strleft(Lcase(doc.Path_Info_Decoded(0)), ".nsf") + ".nsf"+ "/"
Print "Set-Cookie: " + compName + "=" + compValue + "; expires=" + cooktime + "; path=" + dbpath + ";"
End Sub
 
Function escape(strIn As String) As String
Dim strAllowed As String
Dim i As Integer
Dim strChar As String
Dim strReturn As String
 
strAllowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" & "@/.*-_"
i = 1
strReturn = ""
While Not (i > Len(strIn))
strChar = Mid$(strIn, i, 1)
If Instr(1, strAllowed, strChar) > 0 Then
strReturn = strReturn & strChar
Else
strReturn = strReturn & "%" & Hex$(Asc(strChar))
End If
i = i + 1
Wend
escape = strReturn
End Function
 
Function unescape(strIn As String) As String
Dim i As Integer
Dim strChar As String
Dim strReturn As String
 
i = 1
strReturn = ""
While Not (i > Len(strIn))
strChar = Mid$(strIn, i, 1)
If Not strChar = "%" Then
strReturn = strReturn & strChar
Else
i = i + 1
strChar = "&H" & Mid$(strIn, i, 2)
strReturn = strReturn & Chr$(Val(strChar))
i = i + 1
End If
i = i + 1
Wend
unescape = strReturn
End Function
Взято тут: http://noteschat.blogspot.ru/2008/02/setcookie-and-getcookie-using.html
Автор переносил свой блог, исходник его класса вот тут: http://www.codestore.net/store... G-20080211
0
0 / 0 / 0
Регистрация: 20.07.2014
Сообщений: 93
11.01.2017, 12:09
1) вторым параметром данные точно передаются? реквест контент меньше 64кб? http://www-01.ibm.com/support/docview.wss?uid=swg21240370
3) какой-то странный селектор для чекбокса. А такой пробовали - input:checked?

p.s. сложно судить что у вас не так, т.к. код везде не полный Может в файлик запихнете и приаттачите?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
11.01.2017, 14:25
Цитата Сообщение от NetWood
но как вернуть Request_Content?
куда вернуть?
получить в агенте?
0
0 / 0 / 0
Регистрация: 28.05.2005
Сообщений: 347
12.01.2017, 00:20
Цитата Сообщение от lmike
куда вернуть?
получить в агенте?
Да, получить Request_Content в агенте. src.Request_Content(0)из аякса пустой.


Цитата Сообщение от romych2004
1) вторым параметром данные точно передаются? реквест контент меньше 64кб? http://www-01.ibm.com/support/docview.wss?uid=swg21240370
Попробую REQUEST_CONTENT_000...


--- Добавлено 13 янв 2017. Первое сообщение размещено 12 янв 2017 ---

Ответ на вопрос п.3 весьма неожиданный. Server -> Internet Protocols panel -> Domino Web Engine -> Число строк на странице по умолчанию: 50. Поставил больше и $("form[name=Cart] input:checkbox:enabled"). length стал показывать нормально. LOL. Какое отношение имеет JS исполняемый на клиенте к количеству строк сервера. Еще nginx фронтом стоит. Думал, он дуркует.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
12.01.2017, 07:44
Цитата Сообщение от NetWood
Число строк на странице по умолчанию: 50. Поставил больше и $("form[name=Cart] input:checkbox:enabled"). length стал показывать нормально.
ну если посылается запрос в БД (аякс) - будет влиять


--- Добавлено 13 янв 2017. Первое сообщение размещено 13 янв 2017 ---




Цитата Сообщение от romych2004
1) вторым параметром данные точно передаются? реквест контент меньше 64кб? http://www-01.ibm.com/support/docview.wss?uid=swg21240370
неожиданный ход индусской мысли ;)
0
0 / 0 / 0
Регистрация: 28.05.2005
Сообщений: 347
13.01.2017, 01:04
Итак, проверил src.REQUEST_CONTENT_000(0) = пусто

Зову аяксом так:

Code
1
2
3
4
5
6
7
8
$.post(UpdateCartAJAX?OpenAgent+ args,
{
beforeSend: function(){$("#cart_count").fadeOut()} ,
complete: function(){$("#cart_count").fadeIn()}
},
function(){
$("#cart_count").load("doViewCartCount?ReadForm");
}, "html");
В агенте LS src.Request_Content(0)=beforeSend=undefi ned&complete=undefined.
Если закоментить beforeSend и complete, то src.Request_Content(0) пустой.


--- Добавлено 14 янв 2017. Первое сообщение размещено 13 янв 2017 ---

В общем, пришел к выводу, что халява с Request_Content передаваемым по простому сабмиту с формы, на AJAX не проходит.
Данные для Request_Content надо заранее парсить со страницы и явно указывать параметром data в $.ajax.

Работает так:

Code
1
2
testpost :="<a href=javascript:_doTestAJAXPost(); class=bodytext>_doTestAJAXPost</a>";
@(Implode(testpost))

Код (Javascript):
function _doTestAJAXPost(){
var url = 1TestAJAX?OpenAgent;
var itext = $("input:text"); //все текстовые инпуты
var boxes = $("input:checkbox:enabled"); //все чекбоксы
var isboxes = $("input:checkbox:checked"); //все отмеченные чекбоксы
var args = ;
//check ALL input:text value
itext.each(function(){
args = args + "&" + $(thys).attr("name") + "=" + $(thys).val();
});
//check input:checkbox checked
isboxes.each(function(){
args = args + "&" + $(thys).attr(name);
});
$.alert(args); //свой алерт с autocountdown
//var datastr = encodeURI(args);
var datastr = args;
//https://jquery-docs.ru/jQuery.ajax/
$.ajax({
url: url,
type: post,
data: datastr, //Данные отправляемые на сервер = src.Request_Content(0)
//dataType : "html", // тип загружаемых данных
success: function(){$.msgbox(complete _doTestPost)} // свой обработчик на функцию success
});
}


LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Initialize
Тестовый Агент проверки AJAX 1TestAJAX
On Error Goto errHnd
=== WebSession class originally from http://tanny.ica.com/ICA/TKO/tkoblog.nsf/dx/websession-agent-class
Dim web As New WebSession()
Dim arg As Variant, arg2 As String, arguments List As String
arg =  web.session.DocumentContext.Request_Content(0)
Msgbox "ws.Request_Content(0)="+arg
arg2 =  web.session.DocumentContext.Query_String(0)
Msgbox "ws.Query_String(0)="+arg2
errHnd:
If error, let user know - redirect web browser to Order Error page
Print "Error #:" + Str(Err)+ " line: "+ Cstr(Erl)
End Sub
В консоли имеем что-то такое:
14.01.2017 01:39:31 HTTP Server: Agent message: ws.Request_Content(0)=&8868C36
A7E41D17FC32578550037BA66=1&E0979BA5BAEF 22C4C32578550037BAB4=2&4A7AF14E7E354D73C
32578550037BE48=3&2842350FDFDEC9DEC32578 550037BA8C=&63B44202751E197CC32578550037
BD59=&287771D053AB43FBC32578550037BADB=& 761092244449F8C1C32578550037BF38
14.01.2017 01:39:31 HTTP Server: Agent message: ws.Query_String(0)=OpenAgent
0
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
13.01.2017, 11:17
используйте ф-цию серелизации .serialize()
всегда работало без проблем:

Код (Javascript):

var formdata=$(document.forms[0]).serialize();
$.post(url,formdata, function(data) {

})

Если для некоторых полей (уменьшить оверхед) - то типа такого :


Код (Javascript):

function serializeFields(fieldList){
// сериализация только нужных полей текущей формы
// поля перечислены через запятую. Регистр - важен
return $(form:first).find(input[name="+fieldList.split(",").join("],input[name=")+"]).serialize()
}

var formdata=serializeFields(EditDoc,Action, ID,UNID,Form,ServiceTypeKey,RealReqKey,R eqKey,StandartKey,key,eid,Signed,Status) ;
$.ajax({
type: "POST",
url: agent,
data:formdata
})
.done(function(data) {
$("#param-content").html(data);
});
}


Ловля параметров в агенте (свыше 64 к есть другой вариант)

LotusScript
1
2
3
4
5
6
7
8
9
10
Передача параметров
v=Evaluate({@Explode(@UrlDecode("Domino";Request_Content);"&")},contextdoc)
Forall vls In v
tmp=vls
If Not Iselement(ValueList(Strleft(tmp,"="))) Then
ValueList(Strleft(tmp,"="))=Strright(tmp,"=")
Else
ValueList(Strleft(tmp,"="))=ValueList(Strleft(tmp,"="))+"||"+Strright(tmp,"=")
End If
End Forall
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
13.01.2017, 16:21
Цитата Сообщение от rinsk
Ловля параметров в агенте (свыше 64 к есть другой вариант)
собаки могут свыше 64к?
0
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
13.01.2017, 17:48
Цитата Сообщение от lmike
собаки могут свыше 64к?
ну я и говорю - свыше 64к и для аплоада есть другой вариант. даже несколько всяких.
например - https://github.com/extnd/SDK/b... uest_1.lss
Только там несколько ошибок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2017, 17:48
Помогаю со студенческими работами здесь

При включении ПК стартуют кулера на 2 секунды, потом выкл.,и через ещё пару секунд включаются уже на постоянку
Ситуация такая: при включении ПК стартуют кулера на пару секунд, потом выключаются и через ещё пару секунд включаются уже на постоянку....

Как отправить форму, если в ней имеется еще одна форма, через ajax?
Здравствуйте, знатоки. Имеется главная простая форма для отправки с вложенной формой для загрузки файлов. Как отправить главную форму без...

Пару вопросов))
Люди скажите пжл что такое Билдер)) смотрел на сайте http://delfcode.ru/blog)) описанно как его сделать... Добавлено через 1 минуту ...

Пару вопросов
Такой вопрос. Юзаю на сайте движок DLE, на морду поставил ключи, эти ключи ставить на все страницы или на статические страницы свои...

пару вопросов
1. Как убрать в cxLookupComboBox надпись number. http://radikal.ua/data/upload/4efc3/49112/107f78ca83.jpg 2. Как ограничить длину...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru