0

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

我想我可以用 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 在页面之间发送数据。这是示例 代码

<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”&gt;
function testQueryStrings()
{
window.location = “search.aspx?q=abc&type=advanced”;
}
</script>

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

搜索.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

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

于 2012-02-27T17:52:33.300 回答