Ввод с присоединенным компонентом запроса без JavaScript
У меня есть form
элемент, и я хотел бы, чтобы URL
http://example.com/page.html?a=constant+QUERY_TEXT
Если бы я хотел
http://example.com/page.html?a=constant&b=QUERY_TEXT
Я мог бы использовать
<form action="http://example.com/page.html">
<input type="hidden" name="a" value="constant">
<input type="text" name="b">
<input type="submit">
</form>
но есть ли способ получить желаемую форму без сценариев?
2 ответа
Вы можете создать прокси-сервер, чтобы сделать это для вас. Поместите на ваш сервер обработчик, который перенаправляет запросы на целевой сервер и добавляет константу в строку запроса. В зависимости от вашего веб-сервера, кажется, что вы можете сделать это с помощью только настроек конфигурации, без кода.
<form action="/myproxy">
<input type="text" name="a">
<input type="submit">
</form>
Директива Apache mod_alias RedirectMatch:
RedirectMatch ^/myproxy?a=(.+)$ http://example.com/page.html?a=constant+$1
<rewrite>
<rules>
<rule name="proxyRedirect" stopProcessing="true">
<match url="^myproxy?a=(.+)$"/>
<action type="Redirect" url="http://example.com/page.html?a=constant+{R:1}"/>
</rule>
</rules>
</rewrite>
Нет способа сделать это только с помощью HTML и без JavaScript.
Что именно вы публикуете форму тоже? Какой язык вы используете? Думаю, я не совсем понимаю, что вы пытаетесь сделать, потому что оба эти примера:
http://example.com/page.html?a=constant+QUERY_TEXT
http://example.com/page.html?a=constant&b=QUERY_TEXT
Может работать и быть разобранным на любом языке, получающем форму. Это займет всего немного логики, чтобы деконструировать строку. Я сделал нечто подобное, используя jQuery и Ajax для отправки форм.
У меня есть простая кнопка, которая содержит несколько ключевых параметров, таких как:
<a class="alertDeleteButton" href="https://www.example.com/index.cfm?controller=hobbygroupmember&action=deletemember&deleteuserid=#userid#&hobbyid=#id#&adminid=#user.key()#" id="alertDeleteButton_#id#_#userid#" title="#deleteMemberText#">DELETE</a>
Как вы можете видеть, href содержит все виды информации (динамической и статической), которую я хочу передать своей функции. Затем с помощью jQuery я делаю это:
$(".alertDeleteButton").click(function(e) {
var removeButtonString = $(this).attr("href");
var parsed_string = $.parseQuery(removeButtonString);
var currentArgument = $.parseQuery(removeButtonString).currentArgument;
var hobbyid = $.parseQuery(removeButtonString).hobbyid;
......
С помощью jQuery я получаю все необходимые поля, а затем просто передаю их с помощью вызова ajax.
Это то, что вы хотите сделать?