31

私は質問しましたが、私が見つけたものはうまくいきません。Javascriptまたはjqueryを使用してPOSTメソッドでURLを指定するようにリダイレクトする方法はありますか?

4

11 に答える 11

60

Eugene Naydenovの答えに基づいて、私はフォームデータも入力できるこれを使用することになりました。他の人にも役立つことを願っています:

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

更新(2021):数年後、新しいタブ/ウィンドウを開くバージョンも役立つことが判明したので、これも役立つことを願っています. 、

function openPostPage(url, data) {
    var form = document.createElement('form');
    document.body.appendChild(form);
    form.target = '_blank';
    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();
    document.body.removeChild(form);
}
于 2016-07-18T20:30:37.283 に答える
19

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');
于 2013-09-28T07:09:42.113 に答える
10

ここでのアイデアは、GET メソッドを使用せず、URL の外観を維持せずに、ユーザーを別の Web ページにリダイレクトしながら、サーバーにデータを送信することです。したがって、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 メソッドで通知されます。

于 2015-01-04T15:21:56.250 に答える
2

実はコツがあります。たとえば、jQuery を使用して、非表示のフォームを作成し、送信ボタンをトリガーします。

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

そして、

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

Eugene Naydenovによって投稿された jQuery を使用しないバージョンを使用することをお勧めします。

于 2013-09-28T07:10:07.313 に答える
2

これを試して:

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();
于 2013-09-28T07:12:00.577 に答える
-2

hidden method=POST action="YOUR_URL" フォームを作成して記入し、送信する必要があると思います。

于 2013-09-28T07:11:40.203 に答える
-3

そうする方法はありません。

a 要素 S でさえGET.

あなたができることは、投稿してon-success使用中のAjaxリクエストを作成することwindow.open()です。

于 2013-09-28T07:07:43.240 に答える
-3

えっと... 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 !");
>                        }
于 2015-07-30T12:54:56.420 に答える