2014-11-25 3 views
0

Так что я знаю, что когда вы поместите URL-адрес в действие HTML-формы, он отправит пользователей на этот URL-адрес. Я также добавил в целевой атрибут target="_blank", чтобы открыть новый URL-адрес в новом окне. Но я хочу закрыть это окно и остаться на исходном сайте, на котором была отправлена ​​форма. Я попытался сделать это, назвав целевое окно и закрыв его, но это не сработало. Мне интересно, есть ли простой способ сделать это.Отправка формы HTML без открытия нового окна

<form name="leds" id="ledSend" method="get" target="newWindow" action="https://agent.electricimp.com/NkzPvVKeHshT"> 
Lamp Control: <input type="radio" name="led" value="0" checked>Off 
       <input type="radio" name="led" value="1">On<br> 
How long should the Lights stay on? <input type="text" name="timer" value="10">seconds<br> 
Your name? For Our Records <input id="name" type="text" name="user" placeholder="Your name here"><br> 
<input type="submit" value="Update!" onclick="alert(theInput.value +', You are about to change the Light! Keep in mind that there will be about a 2 second delay on the LiveStream.')"/> 
<script> 
var theInput = document.getElementById("name"); 
</script> 
</form> 

<script> 
newWindow.close(); 
</script> 
+1

Существует нечто удивительное, называемое AJAX. Сделай то, что хочешь – baao

+0

Почему Аякс? Простое решение состоит в том, чтобы не иметь атрибута «target» вообще –

+0

Если вы хотите подходить к нему таким образом, безопаснее всего это сделать вызов «закрыть» из окна действия после того, как задняя часть сделала это. Используйте php или что-то повторить последние 3 строки назад. Действительно, для подобных вещей вы должны использовать AJAX. – briansol

ответ

1

Вот что вам нужно, просто настроить его для своих нужд, создать PHP-файл, который вызывается в действии, и пусть это делать то, что вы могли бы сделать с формой - точно таким же образом, но при этом оставаться на та же страница:

$("#ajaxform").submit(function(e) 
    { 
     var postData = $(this).serializeArray(); 
     var formURL = $(this).attr("action"); 
     $.ajax(
     { 
      url : formURL, 
      type: "POST", 
      data : postData, 
      success:function(data) 
      { 
       //data: return data from server 
      } 

     }); 
     e.preventDefault(); //STOP default action 
     e.unbind(); //unbind. to stop multiple form submit. 
    }); 

    $("#ajaxform").submit(); 

Вам нужно включить JQuery в файл, чтобы использовать это!


Как вы используете GET в своей форме - с этой подачей вы получите данные в своем $ _POST.

+0

Хорошо, я просто пытаюсь выяснить форму ajax submit ... Есть ли дополнительный файл php. Или это отправляет строку данных формы: «https://agent.electricimp.com/NkzPvVKeHshT?led=1&timer=10&user=&s=» –

+0

Это приведет к отправке значений полей в следующий файл. Но чем больше я смотрю на вашу форму, тем больше я предполагаю, что вы хотите, чтобы пользователь менял DOM (фоновый цвет ...), правильно? – baao

0

AJAX запрос, предложенный baao, - это путь, но он имеет оговорку. Браузер не сможет передать ваш запрос AJAX, если целевой сервер находится в другом домене. Чтобы решить проблему, она должна обеспечить правильное значение CORS headers.

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

1

другое решение, кроме очевидного, ajax использует внутренний скрытый iframe как свойство target элемента формы. таким образом, форма откроется в скрытом внутреннем элементе. например:

<form id="eFrm" target="ifrm1"> 
</form> 
<iframe id="ifrm1" name="ifrm1" style="display:none"></iframe> 
Смежные вопросы