Преобразовать форму сообщения в строку запроса - PullRequest
0 голосов
/ 27 февраля 2012

Я работаю в ASPDotNetStorefront над пакетом XML (в значительной степени нерелевантным).В основном у меня есть форма с кучей полей и кнопка, которая «отправляет» форму.Я на самом деле хотел бы, чтобы кнопка преобразовывала значения полей в строку запроса, а затем выполняла GET вместо POST.

Я бы предположила, что могла бы сделать что-то подобное с JavaScript, возможно, с jQuery, ноЯ не уверен, как бы я это сделал.В идеале мне нужна простая функция, которую я мог бы вызвать.

Следует отметить, что я использую ASP.Net и хочу преобразовывать только фактические значения полей в строку запроса, а не какую-либо информацию о состоянии.,Это для формы поиска.

Ответы [ 5 ]

3 голосов
/ 27 февраля 2012

С помощью jQuery:

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

с использованием:

jQuery ajax

jQuery serialize

1 голос
/ 27 февраля 2012
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 для отправки данных между страницами.Вот пример кода Это лучшая статья, которую я нашел Использование jQuery для AJAX в 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 с QueryСтрока

<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()” />

для 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>”);
1 голос
/ 27 февраля 2012

Вы можете сделать это:

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

С (поскольку вы пометили этот jQuery):

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

… но формы, которые могут перейти в закладки-Если данные или могут внести существенные изменения, они будут звучать так, как будто они будут вводить пользователя в заблуждение (и я не могу представить себе какой-либо другой причины для переключения с поста на лету в элементах управления конечного пользователя).

Если вы всегда хотите получать данные, вам следует изменить источник, отправленный в браузер, вместо того, чтобы вертеть DOM на лету с помощью JS.

0 голосов
/ 27 февраля 2012

Вы можете просто выбрать <form method="GET"> вместо <form method="POST">.Не требуется Javascript (если вы не хотите обновлять страницу).

0 голосов
/ 27 февраля 2012

Действительно, вам просто нужно изменить атрибут method вашего тега <form> в своем HTML.

Если у вас нет прямого контроля над разметкой, которую генерирует ваш компонент .NET, вы всегда можете манипулировать тегом <form> и устанавливать атрибут с помощью JavaScript при загрузке страницы.

Или вы можете привязать событие click к кнопке отправки формы, отменить событие (например, возвращая false) и выполнить GET самостоятельно.

...