отправка формы в формате html - PullRequest
1 голос
/ 28 июля 2010

Я просматриваю HTML-форму внешнего веб-сайта (не поддерживается мной) в следующем формате:

<form onsubmit="return check(this)" method=post action=address.aspx target=ttPOST>
....
</form>

Я хочу опубликовать данные на этом внешнем веб-сайте без необходимости проходить черезФорма и нажав отправить.

Могу ли я просто перейти по URL-адресу 'address.aspx' и добавить его с необходимыми входными параметрами?

Моя цель - автоматизировать периодическое размещение информации, выбранной из списка часто используемых.изменение значений на сайте.(С использованием Python и AutoIt)

Ответы [ 6 ]

1 голос
/ 28 июля 2010

Вы можете использовать JQuery.post ()

<form action="#" class="myForm" method="post">
    <input type="text" id="field1" name="field1" value="" runat="server" />
</form>
// Submit
<div onclick="submit();return false;">Submit</div>

Тогда функция submit () выглядит как

function submit() {
    $.post("address.aspx", $("form.myForm").serialize(), function(data, textStatus)
    {
        // Handle success or error
    });
}

В codebehind вы можете получить доступ к переменным записи

Request.Form["field1"]
1 голос
/ 28 июля 2010

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

Для большинства языков вы можете получить вещи, которые помогутВы моделируете веб-запросы.Большинство из них, вероятно, позволит вам сделать почтовый запрос и предоставить данные о нем.Я не знаю python и autoit, но в общем смысле вам просто нужно получить пары «имя-значение», посмотрев HTML-код формы (или, вероятно, лучше проанализировав запрос на сервер), а затем сделатьpost post.

Как уже говорили другие, если вы хотите просто добавить значения в URL, тогда сервер должен быть рад принять GET-запрос вместо поста.Иногда вы обнаружите, что серверы будут делать это счастливо (им все равно, как выполняется отправка формы, пока они получают данные), в других случаях он будет специально искать сообщение и будет игнорировать параметры, переданные как часть строки запроса..

0 голосов
/ 28 июля 2010

POST - это не то же самое, что GET - если вы добавите нужные данные в URL, страница не увидит ваши переменные. То есть ПОЛУЧЕНИЕ (a.k.a собирается) http://www.the-other-site.com/address.aspx?variable1=a&variable2=b не будет работать.

Вам необходимо создать запрос POST и отправить его по адресу address.aspx.

Если вы хотите сделать это самостоятельно, вам понадобится модуль Python urllib2 (точнее, объект Request). Если вы хотите использовать готовое решение, вам понадобится что-то вроде mechanize для POST ваших переменных.

0 голосов
/ 28 июля 2010

Вы можете делать запросы AJAX GET (добавляя данные в URL) и выполнять их с определенным интервалом времени.

Я бы порекомендовал jQuery, но он не может быть идеальным в среде .NET.

jQuery.ajax () - http://api.jquery.com/jQuery.ajax/
jQuery.get () - http://api.jquery.com/jQuery.get/

ПРИМЕЧАНИЕ :

Я хочу опубликовать данные на этом внешнем веб-сайте, не просматривая форму и не нажимая кнопку Отправить.

Я понял, что это означает, что вы на самом деле не хотите отправлять форму. Вы хотите отправить форму, но просто не нажимаете кнопку отправки? Если вы действительно хотите, чтобы форма отправлялась, вам просто нужно изменить атрибут method формы на get вместо post.

Если, однако, вы хотите остаться на странице формы и вам необходимо опубликовать данные на каком-либо другом ресурсе с данными в строке URL (есть причины и аганист, делающий это, на которые следует обратить внимание - прокрутите вниз до 9.3 GET), а затем просто выполните запрос AJAX GET, в противном случае просто отправьте данные с помощью AJAX. В любом случае вам придется сделать какой-то асинхронный вызов.

0 голосов
/ 28 июля 2010

Почему вы хотите обойти форму отправки? Отправьте форму и используйте значения в HTTP_POST. Вы можете использовать HTTP_GET, изменив метод на GET в приведенном выше html, но форма все равно будет отправлена.

Один из способов отправить параметры в address.aspx - использовать javascript .... создать строку из всех параметров и передать ее в address.aspx, когда пользователь нажимает кнопку отправки. Вам нужно отключить поведение кнопок отправки по умолчанию.

0 голосов
/ 28 июля 2010

Измените атрибут method с POST на GET.

Читайте о различиях здесь .

Вы можете избежать изменения URL-адреса для перехода на внешний сайт, используя тот же синтаксис параметра GET (?param1=val1&param2=val2...), но для достижения этого вам придется самостоятельно написать эту логику в javascript.

...