将Form Post转换为Querystring

时间:2012-02-27 17:47:22

标签: javascript jquery forms query-string aspdotnetstorefront

我在ASPDotNetStorefront上使用XML包(很大程度上是不可靠的)。基本上我有一个带有一堆字段的表单和一个“提交”表单的按钮。我实际上想让按钮将字段的值转换为查询字符串,然后执行GET而不是POST。

我会想象我可以用JavaScript做这样的事情,也许是jQuery,但我不知道我会怎么做。理想情况下,我想要一个我可以调用的简单函数。

我应该注意到我正在使用ASP.Net,我只想将字段的实际值转换为查询字符串,而不是任何状态信息。这是一个搜索表单。

5 个答案:

答案 0 :(得分:3)

使用jQuery:

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

使用:

jQuery ajax

jQuery serialize

答案 1 :(得分:1)

你可以这样做:

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

使用(因为你标记了这个jQuery):

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

...但是可能转到可添加书签的数据或可能的表单会发生重大更改,就好像它们会让用户感到困惑(我无法想到在最终用户控件中从post切换到动态的任何其他原因)。

如果您一直想要获取数据,那么您应该修改发送到浏览器的源代码,而不是随时随地使用JS来修改DOM。

答案 2 :(得分: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在页面之间发送数据。这是示例代码 这是我发现的最好的文章Using jQuery for AJAX in ASP.NET : codeproject 使用AJAX的例子

<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的示例。带有查询字符串的简单Javascript

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

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

for search.aspx

<script lang=”javascript” type=”text/javascript”>
var qrStr = window.location.search;
var spQrStr = qrStr.substring(1);
var arrQrStr = new Array();
// splits each of pair
var arr = spQrStr.split(‘&’);
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(“<h1>Search parameter: “+arrQrStr["q"]+”. Extra parameter: “+arrQrStr["type"]+”</h1>”);

答案 3 :(得分:0)

实际上,您只需要更改HTML中method标记的<form>属性。

如果您无法直接控制.NET组件生成的标记,则可以随时操作<form>标记,并在页面加载时使用JavaScript设置属性。

或者,您可以将单击事件绑定到表单的提交按钮,然后取消事件(例如返回false),然后自己执行GET

答案 4 :(得分:0)

您可以选择<form method="GET">代替<form method="POST">。不需要Javascript(除非您不想刷新页面)。