Ввод с присоединенным компонентом запроса без 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

Модуль перезаписи URL IIS:

<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&amp;action=deletemember&amp;deleteuserid=#userid#&amp;hobbyid=#id#&amp;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.

Это то, что вы хотите сделать?

Другие вопросы по тегам