2013-09-28 3 views

ответ

-3

Невозможно сделать это.

Даже a a элемент Sstrikes GET.

Что вы можете сделать, это сделать запрос Ajax для отправки и в on-success использовать window.open().

14

Создайте форму, заполните method и action атрибуты, отправьте форму.

var redirect = function(url, method) { 
    var form = document.createElement('form'); 
    form.method = method; 
    form.action = url; 
    form.submit(); 
}; 

redirect('http://www.example.com', 'post'); 

JQuery версия (но я бы предпочел чистый JavaScript в данном конкретном случае):

var redirect = function(url, method) { 
    $('<form>', { 
     method: method, 
     action: url 
    }).submit(); 
}; 

redirect('http://www.example.com', 'post'); 
+0

Это не сработает, если этот метод является другим доменом. Однако, если вы вставляете его в документ, он будет работать. – scruffian

+2

Конечно. То же, что и в любой форме. Просто из-за политики того же происхождения (https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy). –

+0

Мне пришлось добавить это, чтобы отправить работу: $ ('body'). Append (form); – NiBE

1

На самом деле есть трюк. Вы можете создать скрытую форму и вызвать кнопку отправки, с JQuery, например:

<form method="POST" action="newurl.html" id="myform"> 
</form> 

и сделать

$('#myform').submit(); 

Я предлагаю вам использовать версию не-JQuery, отправленный Евгений Найденов

+0

Обратите внимание, что это не требует jQuery, если вы меняете '$ ('# myform'). Submit()' to 'document.querySelector ('# myform'). Submit()'. – Salis

-2

Я думаю, вы должны построить и заполнить скрытый метод = POST действие = «YOUR_URL» форму и отправить его,

1

Попробуйте это:

var url = 'http://example.com/vote/' + Username; 
var form = $('<form action="' + url + '" method="post">' + 
    '<input type="text" name="api_url" value="' + Return_URL + '" />' + 
    '</form>'); 
$('body').append(form); 
$(form).submit(); 
0

Вы можете использовать сериализовать форму и все данные в сообщении. Ниже приведен пример.

$("#submit_btn").click(function(){ 
     $('.error_status').html(); 
      if($("form#frm_message_board").valid()) 
      { 
       $.ajax({ 
         type: "POST", 
         url: "<?php echo site_url('message_board/add');?>", 
         data: $('#frm_message_board').serialize(), 
         success: function(msg) { 
          var msg = $.parseJSON(msg); 
          if(msg.success=='yes') 
          { 
                      return true; 
         } 
         else 
         { 
          alert('Server error'); 
          return false; 
         } 
         } 
       }); 
      } 
      return false; 
     }); 
6

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

HTML код/​​Javascript для создания формы и отправки его на сервер:

<html> 
<body> 
<script> 
var form = document.createElement("form"); 
form.method = 'post'; 
form.action = 'receive.php'; 
var input = document.createElement('input'); 
input.type = "text"; 
input.name = "data"; 
input.value = "this is the data I'm sending to server through POST"; 
form.appendChild(input); 
form.submit(); 
</script> 
<body> 
<html> 

Получение этих данных в PHP:

<pre> 
<?php 
var_dump($_POST); 
?> 
</pre> 

Таким образом, пользователи будут перенаправляться на receive.php с некоторыми данными, сообщаемыми в методе POST.

-2

Использование JQuery размещать данные и перенаправить в нужное место так:

$.ajax({ 
    type: 'POST', 
    url: 'receivedata.asp', 
    data: 'formValue=someValue', 
    success: function(data){ 
     window.location = data; 
    } 
}); 

Вы можете удалить данные: «formValue = SomeValue», если нет никаких данных, чтобы перейти на страницу, которую вы хотите опубликовать в.

-2

да ... использовать AJAX Jquery:

> $.ajax({ 
>      type: "POST", 
>      url: "www.example.com/the_page_I_post_to.php", 
>      data: $('yourform').serialize(),//sent data 
>      success: function(msg) { 
>       alert("posted !"); 
>      } 
+1

JQuery $ .ajax фактически не перенаправляет. Он отправляет XHR в фоновом режиме. Ответ, отправленный @Fernando, работает лучше всего в соответствии с тем, что было задано. –

13

На основании ответа Eugene Naydenov «s, я в конечном итоге с помощью этого, который способен заполнить данные формы и, надеемся быть полезными для других:

function redirectPost(url, data) { 
    var form = document.createElement('form'); 
    document.body.appendChild(form); 
    form.method = 'post'; 
    form.action = url; 
    for (var name in data) { 
     var input = document.createElement('input'); 
     input.type = 'hidden'; 
     input.name = name; 
     input.value = data[name]; 
     form.appendChild(input); 
    } 
    form.submit(); 
} 

// redirectPost('http://www.example.com', { text: 'text\n\ntext' }); 
+1

Это лучший ответ, поскольку он учитывает отправку данных с помощью метода POST, поэтому вы хотите использовать перенаправление метода POST, иначе вы будете использовать GET. – Deanie

+0

Возможно, вам придется добавить 'document.body.appendChild (form);' к этому (например, перед 'form.submit()'), поскольку спецификация HTML не позволяет формам, которые не связаны с документом, быть представленным. См. [Этот ответ] (https://stackoverflow.com/a/42081856) для получения дополнительной информации. –

+0

Спасибо, сделано. –

1

Перенаправление с POST вары (на JQuery)

var redirect = 'http://www.website.com/page?id=23231'; 
$.redirectPost(redirect, {x: 'example', y: 'abc'}); 

$.extend(
{ 
    redirectPost: function(location, args) 
    { 
     var form = ''; 
     $.each(args, function(key, value) { 
      form += '<input type="hidden" name="'+key+'" value="'+value+'">'; 
     }); 
     $('<form action="'+location+'" method="POST">'+form+'</form>').submit(); 
    } 
}); 
Смежные вопросы