0

私はASPDotNetStorefrontでXMLパッケージを使用しています(ほとんど無関係です)。基本的に、私はたくさんのフィールドとフォームを「送信」するボタンを備えたフォームを持っています。実際には、ボタンでフィールドの値をクエリ文字列に変換してから、POSTではなくGETを実行したいと思います。

JavaScript、おそらくjQueryでこのようなことができると思いますが、どうすればよいかわかりません。理想的には、呼び出すことができる単純な関数が必要です。

ASP.Netを使用しており、フィールドの実際の値のみをクエリ文字列に変換したいので、状態情報は変換したくないことに注意してください。これは検索フォーム用です。

4

5 に答える 5

3

jQuery の場合:

$.ajax({
    url: 'url/Action',
    type: 'GET',
    data: $('#formId').serialize()
})

使用:

jQuery アヤックス

jQueryシリアライズ

于 2012-02-27T17:50:15.443 に答える
1

あなたはこれを行うことができます:

<input type="submit" value="get">

(このjQueryにタグを付けたので):

jQuery('input[type=submit]').click(function () { this.form.method = 'GET'; });

…しかし、ブックマーク可能なデータに移動したり、大幅な変更を加えたりする可能のあるフォームは、ユーザーを混乱させるように聞こえます (そして、投稿からエンド ユーザー コントロールでその場で取得するように切り替える他の理由は考えられません)。 .

常にデータを取得したい場合は、JS でその場で DOM をいじるのではなく、ブラウザーに送信されるソースを変更する必要があります。

于 2012-02-27T17:53:10.367 に答える
1
Response.Redirect("Webform2.aspx?Name=" +
this.txtName.Text + "&LastName=" +
this.txtLastName.Text);

WebForm2.aspx では、このようにすることができます

for (int i =0;i < Request.QueryString.Count;i++)
{
Response.Write(Request.QueryString[i]);
}

jquery の場合、AJAX を使用してページ間でデータを送信できます。ここにサンプルコードがありますこれは私が見つけた最高の記事ですASP.NETでAJAXにjQueryを使用する:AJAXを使用するcodeproject の例

<div style="width:350px">
    <div style="background:#CCC"> <a href="#" id="editName">Edit</a></div>
    <div id="divView"><asp:literal id="litName" runat="server"/></div>
    <div id="divEdit" style="display:none"></div>
</div>    
var options = {
                method: 'POST',
                url: 'ChangeName.aspx',
                after: function(response) {
                    $("div#divView").html(response).show();
                    $("div#divEdit").empty().hide();
            $("a#editName").show(); 
                }
            };
            //bind to form's onsubmit event
            $("form#ChangeName").ajaxForm(options);

AJAX.Simple Javascript を使用しない例とクエリ文字列

<script lang=”javascript” type=”text/javascript”&gt;
function testQueryStrings()
{
window.location = “search.aspx?q=abc&type=advanced”;
}
</script>

<input type=”button” id=”btn” value=”Test Query Strings” onclick=”testQueryStrings()” />

search.aspx の場合

<script lang=”javascript” type=”text/javascript”&gt;
var qrStr = window.location.search;
var spQrStr = qrStr.substring(1);
var arrQrStr = new Array();
// splits each of pair
var arr = spQrStr.split(‘&amp;’);
for (var i=0;i<arr.length;i++){
// splits each of field-value pair
var index = arr[i].indexOf(‘=’);
var key = arr[i].substring(0,index);
var val = arr[i].substring(index+1);

// saves each of field-value pair in an array variable
arrQrStr[key] = val;
}

document.write(“&lt;h1>Search parameter: “+arrQrStr["q"]+”. Extra parameter: “+arrQrStr["type"]+”&lt;/h1>”);
于 2012-02-27T18:06:45.903 に答える
0

実際には、HTML 内のタグのmethod属性を変更するだけです。<form>

.NET コンポーネントが生成するマークアップを直接制御できない場合は<form>、ページの読み込み時にいつでもタグを操作し、JavaScript で属性を設定できます。

または、クリック イベントをフォームの送信ボタンにバインドし、(falseたとえば戻ることによって) イベントをキャンセルして、GET自分で実行することもできます。

于 2012-02-27T17:52:28.310 に答える
0

<form method="GET">の代わりにse を使用できます<form method="POST">。Javascript は必要ありません (ページを更新したくない場合を除きます)。

于 2012-02-27T17:52:33.300 に答える