将Form Post转换为Querystring

Convert Form Post to Querystring

本文关键字:Querystring 转换 Post Form      更新时间:2023-09-26

我正在ASPDotNetStorefront开发一个XML包(基本上是无关紧要的)。基本上,我有一个表单,它有一堆字段和一个"提交"表单的按钮。实际上,我想让按钮将字段的值转换为查询字符串,然后执行GET而不是POST。

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

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

使用jQuery:

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

使用:

jQuery ajax

jQuery序列化

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中找到的最好的使用jQuery for AJAX的文章: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>”);

您可以这样做:

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

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

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

……但可能会进入可添加书签的数据,或者会做出重大更改的表单听起来会让用户感到困惑(我想不出有任何其他理由从post切换到在最终用户控件中运行)。

如果你总是想获取数据,那么你应该修改发送到浏览器的源代码,而不是用JS动态地摆弄DOM。

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

如果您不能直接控制.NET组件生成的标记,那么在加载页面时,您可以始终操作<form>标记并使用JavaScript设置属性。

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

您可以使用<form method="GET">而不是<form method="POST">。不需要Javascript(除非您不想刷新页面)。