web_submit_data: Изменяемое кол-во параметров.
#1
Отправлено 15 июня 2006 - 17:17
Столкнулся с интересной задачей:
Инструмент: LR 8.0
Протокол: web
ЛР записывает скрипт, в котором количество пунктов в операторе web_submit_data будет постоянно расти:
web_submit_data("MyAction",
"Action=http//MyURL",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Mode=HTML",
ITEMDATA,
"Name=leftbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=96", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=15", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
LAST);
Количество rightbox-ов увеличивается с каждой итерацией, т.е. в примере, указанном выше, кол-во rightbox = 7. При следующей итерации их будет 8 и.т.д. Кто-нибудь сталкивался с подобной проблемой?
Спасибо.
#2
Отправлено 15 июня 2006 - 21:32
#3
Отправлено 16 июня 2006 - 00:24
Интересно, а как всё это обрабатывается сервером?web_submit_data("MyAction",
ITEMDATA,
"Name=leftbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=96", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=15", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
"Name=rightbox", "Value=97", ENDITEM,
LAST);
Что он делает с несколькиими Name/Value парами с одинаковыми именами "rightbox"?
Вы не пробовали просто посылать только одно значение "Name=rightbox", "Value=97"?
Как при этом себя ведет ваше приложение?
#4
Отправлено 16 июня 2006 - 05:24
Это как раз то, что нужно.
Yury,
я не знаю, что делает сервер с этими значениями. Мне самому хотелось бы взглянуть в глаза того, кто написал такой код - если представить только, что при каждом обращенни пересылаются десятки и сотни rightbox-ов, то говорить о производительности тут не придется.
Я пробовал пересылать только одно значение - тогда исчезают предыдущие введенные значения.
#5
Отправлено 22 октября 2010 - 14:19
Посмотрите в LR KB статью за номером 9208. Там хорошо расписана идея и есть даже пример скрипта, реализующего требуемую логику.
Дмитрий, помогите, пожалуйста, найти эту статью.
Заранее благодарна...
#6
Отправлено 15 декабря 2010 - 14:13
Вот решение:
/* now write out changed and saved parameters */ for (i = 0; i < numrecords; i++) { sprintf(tmpname, "xxxxxxxnts%d", i); lr_save_string(rget_parm(tmpname), "VALUE"); make_html_parm("VALUE"); strcat(wcr_buf, tmpname); strcat(wcr_buf, "="); strcat(wcr_buf, lr_eval_string("{HTML_VALUE}")); strcat(wcr_buf, "&"); for (j = 1; j <= 3; j++) { sprintf(tmpname, "xxxxxxe%d_%d", j, i); lr_save_string(rget_parm(tmpname), "VALUE"); make_html_parm("VALUE"); strcat(wcr_buf, tmpname); strcat(wcr_buf, "="); strcat(wcr_buf, lr_eval_string("{HTML_VALUE}")); strcat(wcr_buf, "&"); } } strcat(wcr_buf, "command=Save+Changes"); web_reg_find("Text=Your changes have been saved", LAST); web_revert_auto_header("Pragma"); lr_start_transaction("xxxxxxxxxxxxxxxx_Save"); web_custom_request("xxxxxxxxxxxxx_3", "URL=http://{SERVER_NAME}/{APP_BASE_DIR}/xxxxxxxxxxxxr", "Method=POST", "Resource=0", "RecContentType=text/html", "Referer=http://{SERVER_NAME}/{APP_BASE_DIR}/CppController", "Snapshot=t5.inf", "Mode=HTTP", [b]wcr_buf,[/b] LAST);
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных