Как перенаправить метод "POST" с помощью Javascript?

Я запросил и не понял, что нашел. Есть ли способ перенаправления для предоставления URL-адреса с помощью метода POST с использованием Javascript или jquery?

Ответ 1

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

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' });

Ответ 2

Создайте формы, заполните 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');

Ответ 3

Здесь идея отправить данные на сервер при перенаправлении пользователя на другую веб-страницу без использования метода 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>

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

Ответ 4

Попробуйте следующее:

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();

Ответ 5

Перенаправление с помощью POST vars (на 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();
    }
});

Ответ 6

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

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

и выполните

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

Я предлагаю вам использовать версию no-jQuery, опубликованную Юджином Найденовым

Ответ 7

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

$("#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;
        });

Ответ 8

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

Ответ 9

Нет способа сделать это.

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

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

Ответ 10

Используя jQuery, отправьте данные и переадресовывайте их в нужное место:

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

Вы можете удалить данные: 'formValue = someValue', если нет данных для перехода на страницу, которую вы хотите отправить.

Ответ 11

huh... использовать 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 !");
>                        }