我在ASPDotNetStorefront上使用XML包(很大程度上是不可靠的)。基本上我有一个带有一堆字段的表单和一个“提交”表单的按钮。我实际上想让按钮将字段的值转换为查询字符串,然后执行GET而不是POST。
我会想象我可以用JavaScript做这样的事情,也许是jQuery,但我不知道我会怎么做。理想情况下,我想要一个我可以调用的简单函数。
我应该注意到我正在使用ASP.Net,我只想将字段的实际值转换为查询字符串,而不是任何状态信息。这是一个搜索表单。
答案 0 :(得分:3)
使用jQuery:
$.ajax({
url: 'url/Action',
type: 'GET',
data: $('#formId').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(除非您不想刷新页面)。