web-dev-qa-db-ja.com

POSTの変数をJqueryで別のページに渡す

私はJqueryに比較的慣れていないので、変数を別のページに投稿してからリダイレクトするにはどうすればよいのでしょうか。 ajax関数を使用しましたが、リダイレクトは正常に機能しますが、変数はPOST(空です)にキャプチャされません)

function linkWO() {

    $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "LinkTagOut.aspx",
            dataType: "json",
            data: "{id=1}",
            complete:
            function () {
                window.location = "LinkTagOut.aspx";
            }

    });
}

私のaspxファイルで

<a href="javascript:void(0);" onclick="return linkWO();"><span>Link</span></a>
9
sarsnake

この答えは簡単な修正のためだけです

ここでクエリ文字列として渡してみませんか

window.location = "LinkTagOut.aspx?variabletopass=test"; 
<form id="target" action="destination.html">
  <input type="text" value="Hello there" />
  <input type="submit" value="Go" />
</form>
<div id="other">
  Trigger the handler
</div>

$('#target').submit(function() {
$.post('ajax/test.html', function(data) {      
});
  return false;
});
2
kobe
$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "LinkTagOut.aspx",
        dataType: "json",
        data: { id: 1 }, // or the string: 'id=1'
        complete:
        function () {
            window.location = "LinkTagOut.aspx";
        }

});

$。ajaxドキュメントdataオプション)から:

サーバーに送信されるデータ。まだ文字列でない場合は、クエリ文字列に変換されます。 GETリクエストのURLに追加されます。この自動処理を防ぐには、processDataオプションを参照してください。オブジェクトはキーと値のペアである必要があります。値が配列の場合、jQueryは、従来の設定(以下で説明)の値に基づいて、同じキーで複数の値をシリアル化します。

また、必ずreturn false送信ハンドラー(またはajax呼び出しを起動するもの)の最後から、「通常の」リダイレクトが発生していないことを確認します。

3
karim79

このドキュメントページの「データ」オプションをご覧ください: http://api.jquery.com/jQuery.ajax/

問題は、json文字列を渡そうとしていることです(文字列を渡すことは有効です)が、文字列を渡す場合、jQueryはパラメーター化されたクエリ文字列を予期しています。 jsonオブジェクトを渡す場合は、文字列であってはなりません。

ただし、この方法で渡されたjsonオブジェクトはjQueryによってパラメーター化されたクエリ文字列に変換されるため、不便でない場合(この場合、値が1つしかない場合など)は、そのまま渡して開始することをお勧めします。スクリプトを使用して、いくつかの作業を保存します。

0
Ender

コードを少なくしたい場合は、次のようにします。

  1. javascript(js)フォルダーに jquery.redirect.min.js を含めます。
  2. JQUERYロードスクリプトの後にファイルをロードします。

    <script type='text/javascript' src='jquery.js'> 
    </script>
    
    <script type='text/javascript' src='jquery.redirect.min.js'>
    </script>
    
  3. Javascriptコードの次の行(コピー/貼り付け)で必要なパラメーターを置き換えるだけです。

    $().redirect('targeturl.html', {'post_var_1': 'value1', 'post_var_2': 'value2'});
    

これは、formタグを使用せずに変数を別のページに投稿するために私が見つけた最も簡単で最速の方法です。幸運を!

0
Alejo Toro