あるページから別のページにクエリ文字列で非表示のフィールドにクエリを渡したいです。誰かがロジックを手伝ってくれますか?
6 に答える
時間をかけてjQueryを学ぶ価値はあります。それほど複雑ではなく、JavaScript の記述がはるかに簡単になります。jquery.urlなど、多くの jQuery プラグインもあります。
また、他の投稿者が示唆しているように、ユーザーに表示されることを気にする場合は、非表示フィールドの値をクエリ文字列に入れたくない場合があります。ただし、データが隠しフィールドに存在する場合、ユーザーが見ようと思えばいつでも見つけることができます。
隠しフィールドをクエリ文字列に入れ、jQuery 以外の JavaScript で抽出したい場合は、次のようにします。
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");
処理ページ.aspx
このスクリプトは、フォームのメソッドが「GET」に設定されていると仮定して、URL から「datum」の値を含む警告ボックスをポップアップします。
<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"] );
2 ページ目の非表示の値を取得するには、次のようにします。
var datum = document.Form1.item("datum").value;
alert( datum );
パラメータを使用して、あるページで別のページを指すフォームを簡単に送信できaction
ます。たとえば、page1.aspx 内に次のように記述します。
<form action="page2.aspx" method="GET">
<input type="hidden" name="username" value="joenobody" />
<input type="submit" />
</form>
メソッドとして「POST」ではなく「GET」を使用しているため、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>
<form method="get">
HTML フォームで method="get" を使用すると、そのフォームの非表示の入力がクエリ パラメータに変換されます。
Jeremy Stein's answer も参照してください。
HTMLフォームの意味で非表示を意味すると仮定すると、フォームが送信されると、フィールドは他のすべてのフィールドとともに送信されます。GET 経由で送信する場合、「非表示」フィールドは URL にプレーン テキストで表示されます。非表示フィールドのデータにユーザーがアクセスできないようにする場合は、そのフィールドにわかりやすい値を入力しないでください。
aspx を使用している場合は、JavaScript を使用してクエリ文字列を解析する必要はなく、<form method="GET" ...>
. フォームを 2 番目のaspx
ページに POST し、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>
上記は、POST 後に呼び出されたクライアント側の JavaScript 変数myHiddenClientValue
を の値に設定します。'myHiddenServerValue'
myHiddenServerField
一重引用符または改行文字が含まれていると、クライアントでの設定page2.aspx
が失敗する可能性があるため、これは悪い考えです。クライアント JavaScript への ASP.NET サーバー変数の埋め込みおよびクライアント JavaScriptへのASP.NET サーバー変数の埋め込み (第 2 部)では、特にこれらの問題を扱い、クライアントに書き込まれる値が正しくエスケープされるようにするサーバー側クラスでそれらを解決します。