2015-02-04 3 views
5

Мне было интересно узнать, можно ли уловить URL-адрес, созданный из формы, при запуске события 'submit'.Получите URL-адрес, сгенерированный из формы при отправке с помощью javascript

Я знаю, что я могу генерировать URL из данных

Я не говорю о действии URL формы в

Я имею в виду ?field=value&other-input-name=value& ... Часть

Сценарий:

Мы имеют форму и JS-скрипт, который отправляет запрос ajax скрипту PHP.

Я обычно делаю так:

  • Регистрация для формы Передать событие
  • поведение Предотвратить по умолчанию
  • Construct URL из данных
  • Открытый запрос HTTP с сконструированной URL

сейчас , Мне было интересно, когда стрельба «submit» обычно (при запросах без ajax) URL-адрес создается по форме, которая t курица использует этот URL для отправки данных в php-копию.

Как я могу «поймать» этот URL? Никаких подсказок от самого события, которое, похоже, не хранит его, или, по крайней мере, я не смог его найти.

Это должно быть где-то!

+0

Вы можете получить атрибут действия формы. Если атрибут действия не определен, то текущая страница является целевой. – Robbert

ответ

1

Возможно, вы хотите получить адрес электронной почты формы? Этот URL может быть получен следующим образом:

document.getElementById("form-id").action 

Если вы используете JQuery и предполагая, что вы делаете в Ajax, это было бы так:

var el = $('#form-id'); 
$.ajax({ 
    type: el.attr('method'), 
    url: el.attr('action'), 
    data: el.serialize(), 
    context: this 
}).done(callback); 
+0

Нет, я говорю о сгенерированных сериализованных данных URL, которые создаются при представлении, '[email protected]&name=myname ... 'part! – ghzmdr

+0

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

+0

Без проблем спасибо! – ghzmdr

2

Проще говоря, вы не можете. Лучшее, что вы можете сделать, это собрать поле формы значения самостоятельно, или с помощью функции JQuery в .serialize(), который возвращает эти значения в точности, как и следовало ожидать:

name=value&name2=value2 
+0

Я не хочу, чтобы это было просто, я знаю, что могу получить их с поля, как обычно, пожалуйста, уточните sir – ghzmdr

+0

Вы не можете перехватить запрос, который форма отправит на сервер. –

0

Как уже было сказано, вы не можете получить сгенерированный URL содержащий значения форм, которые генерирует браузер, но его очень легко построить самостоятельно.

Если вы используете JQuery, используйте serialize(), если не ссылаетесь на это сообщение Getting all form values by javascript.

var targetForm = $('#myForm'); 
 
var urlWithParams = targetForm.attr('action') + "?" + targetForm.serialize(); 
 
alert(urlWithParams);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<form action="/search/" id="myForm" method="get"> 
 
    <input name="param1" type="hidden" value="1">  
 
    <input name="param2" type="hidden" value="some text"> 
 
</form>