Передача скрытого поля с одной страницы на другую в строке запроса - PullRequest
2 голосов
/ 21 сентября 2009

Я хочу передать запрос в скрытом поле с одной страницы на другую по строке запроса. Может кто-нибудь помочь мне с логикой?

Ответы [ 6 ]

2 голосов
/ 22 сентября 2009

Стоит потратить время на изучение jQuery . Это не очень сложно, и это делает написание JavaScript гораздо проще. Есть также много плагинов jQuery, таких как jquery.url .

Также, как предлагали другие авторы, вы, возможно, не захотите помещать значение скрытого поля в строку запроса, если вам важно, чтобы оно отображалось пользователю. Однако, если данные присутствуют в скрытом поле, пользователь всегда сможет их найти, если хочет посмотреть.

Если вы действительно хотите поместить скрытое поле в строку запроса, а затем извлечь его с помощью javascript, не являющегося jQuery:

hiddenFieldPage.aspx

Эта форма приведет пользователя к processingPage.aspx? Datum = someValue, когда она будет отправлена. Вы также можете просто использовать обычную ссылку, если больше ничего не нужно отправлять одновременно.

<form method="GET" action="processingPage.aspx">
    <input type="hidden" name="datum" value="someValue">
    <input type="submit">
</form>

или, вставив значение из кода:

RegisterHiddenField("datum", "someValue");

processingPage.aspx

Этот скрипт вызовет окно предупреждения со значением «datum» из URL - при условии, что для метода формы установлено значение «GET»:

    <script type="text/javascript">

        function getUrlParam( key ) {

            // Get the query and split it into its constituent params
            var query = window.location.search.substring(1);
            var params = query.split('&');

            // Loop through the params till we find the one we want
            for( var i in params ) { 
                var keyValue = params[i].split('=');
                if( key == keyValue[0] ) {
                    return keyValue[1];
                }
            }

            // Didn't find it, so return null
            return null;
        }

        alert( getUrlParam("datum") );
    </script>

Если для метода формы установлено значение «POST» (как обычно это делается в ASP.NET), то «datum» не будет в строке запроса, и вам придется снова разместить его на странице:

RegisterHiddenField( "datum", Request.Form["datum"] );

Чтобы получить скрытое значение на второй странице:

var datum = document.Form1.item("datum").value;
alert( datum );
1 голос
/ 21 сентября 2009

Вы можете легко отправить форму на одной странице, которая указывает на другую страницу, используя параметр action. Например, внутри page1.aspx поместите следующее:

<form action="page2.aspx" method="GET">
  <input type="hidden" name="username" value="joenobody" />
  <input type="submit" />
</form>

Поскольку вы используете «GET» в качестве метода вместо «POST», вы можете использовать Javascript для анализа URL-адреса и получения переданного значения. В качестве альтернативы вы можете использовать ASPX для хранения значения поля «имя пользователя» где-то еще на странице. Я не знаю ASPX (или ASP, или что-нибудь на самом деле Microsoft), но если вы можете найти способ вывести что-то вроде следующего (и используете jQuery ), он может сделать то, что вам нужно. Честно говоря, звучит так, будто вы делаете что-то не так. Можете ли вы изменить свой вопрос, чтобы он был более конкретным в отношении того, что является общим объектом, который вы пытаетесь выполнить?

<div id="some_div"><%= Request.form("username") %></div>

<script type='text/javascript'>
  var value_needed = $('#some_div').html();
</script>
0 голосов
/ 21 сентября 2009

Если вы используете aspx, вам не нужно анализировать строку запроса с помощью JavaScript или даже использовать <form method="GET" ...>. Вы можете отправить форму на вторую aspx страницу, извлечь значение в C # или VB и записать его в переменную JavaScript на стороне клиента. Примерно так:

page1.aspx

<form method="POST" action="page2.aspx">
    <input type="hidden" name="myHiddenServerField" value="myHiddenServerValue">
    <input type="submit">
</form>

page2.aspx :

<script type="text/javascript">
var myHiddenClientValue = '<%= Request.Form['myHiddenServerField']; %>';
</script>

Выше было бы установить переменную JavaScript на стороне клиента под названием myHiddenClientValue в значение 'myHiddenServerValue' после POST.

Это может быть плохой идеей, потому что если myHiddenServerField содержит одинарные кавычки или символ новой строки, то установка его на клиенте в page2.aspx может завершиться неудачно. Встраивание серверных переменных ASP.NET в клиентский JavaScript и Встраивание серверных переменных ASP.NET в клиентский JavaScript, часть 2 конкретно занимается этими проблемами и решает их с помощью серверного класса обеспечивает правильное экранирование значений, записываемых клиенту.

0 голосов
/ 21 сентября 2009

Предполагая, что вы имеете в виду скрытый в смысле HTML-формы, ваше поле будет отправлено вместе со всеми другими полями при отправке формы. Если вы отправляете через GET, то ваше «скрытое» поле будет отображаться в виде обычного текста в URL. Если вы не хотите, чтобы данные в скрытом поле были доступны пользователям, не ставьте понятное значение в этом поле.

0 голосов
/ 21 сентября 2009

Если вы используете method = "get" в HTML-форме, все скрытые входные данные в этой форме будут преобразованы в параметры запроса.

См. Также ответ Джереми Стейна.

0 голосов
/ 21 сентября 2009
<form method="get">
...