0 / 0 / 0
Регистрация: 28.05.2005
Сообщений: 347
|
|
1 | |
src.Request_Content(0) не работает через AJAX и еще пару вопросов.11.01.2017, 09:51. Показов 3953. Ответов 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. И дальше Код
$.getJSON(doValidateUNIDjson?openpage+&rnds=+rndsess; function(resp){ var respunid = resp.unid; if ( respunid != null) {_doSetCookie(shopcart, respunid) }; 3. При подсчете в JS вот такой конструкции: Код
var boxes = $("form[name=Cart] input:checkbox:enabled"); isboxes.each(function(){ chboxes = chboxes+1; args = args + "&" + $(thys).attr(name)+=1; }); Код
if ( chboxes >=50 ) { $.msgbox(Более 50 товаров удалить сразу нельзя.,4); boxes.removeAttr(checked); ку2: Попутно был найден и заюзан неплохой WebSession class originally from http://tanny.ica.com/ICA/TKO/t... gent-class, но в нем нет метода прописывания кук в агенте LS. Может кто доделывал?
0
|
11.01.2017, 09:51 | |
Ответы с готовыми решениями:
9
процессы и ещё пару вопросов Ввод вывод из/в файлы(и еще пару вопросов) пару вопросов по ASP.NET AJAX При включении ПК стартуют кулера на 2 секунды, потом выкл.,и через ещё пару секунд включаются уже на постоянку |
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
|
||||||
11.01.2017, 10:26 | 2 | |||||
Сообщение от NetWood
.SpoilerTarget">Спойлер: Код
Автор переносил свой блог, исходник его класса вот тут: http://www.codestore.net/store... G-20080211
0
|
0 / 0 / 0
Регистрация: 20.07.2014
Сообщений: 93
|
|
11.01.2017, 12:09 | 3 |
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 | 4 |
Сообщение от NetWood
получить в агенте?
0
|
0 / 0 / 0
Регистрация: 28.05.2005
Сообщений: 347
|
|
12.01.2017, 00:20 | 5 |
Сообщение от lmike
Сообщение от romych2004
--- Добавлено 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 | 6 |
Сообщение от NetWood
--- Добавлено 13 янв 2017. Первое сообщение размещено 13 янв 2017 ---
Сообщение от romych2004
0
|
0 / 0 / 0
Регистрация: 28.05.2005
Сообщений: 347
|
||||||
13.01.2017, 01:04 | 7 | |||||
Итак, проверил src.REQUEST_CONTENT_000(0) = пусто
Зову аяксом так: Код
$.post(UpdateCartAJAX?OpenAgent+ args, { beforeSend: function(){$("#cart_count").fadeOut()} , complete: function(){$("#cart_count").fadeIn()} }, function(){ $("#cart_count").load("doViewCartCount?ReadForm"); }, "html"); Если закоментить beforeSend и complete, то src.Request_Content(0) пустой. --- Добавлено 14 янв 2017. Первое сообщение размещено 13 янв 2017 --- В общем, пришел к выводу, что халява с Request_Content передаваемым по простому сабмиту с формы, на AJAX не проходит. Данные для Request_Content надо заранее парсить со страницы и явно указывать параметром data в $.ajax. Работает так: Код
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 }); }
14.01.2017 01:39:31 HTTP Server: Agent message: ws.Request_Content(0)=&8868C36 A7E41D17FC32578550037BA66=1&E0979BA5BAEF22C4C32578550037BAB4=2&4A7AF14E7E354D73C 32578550037BE48=3&2842350FDFDEC9DEC32578550037BA8C=&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 | 8 | |||||
используйте ф-цию серелизации .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 к есть другой вариант)
0
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
13.01.2017, 16:21 | 9 |
Сообщение от rinsk
0
|
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
|
|
13.01.2017, 17:48 | 10 |
Сообщение от lmike
например - https://github.com/extnd/SDK/b... uest_1.lss Только там несколько ошибок.
0
|
13.01.2017, 17:48 | |
13.01.2017, 17:48 | |
Помогаю со студенческими работами здесь
10
Как отправить форму, если в ней имеется еще одна форма, через ajax? Пару вопросов)) Пару вопросов пару вопросов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |