2017-01-24 20 views
1

現在、私は、テキストボックスに入力してボタンをクリックすると、別のページにリダイレクトするページがあります。別のページを読み込んだ後にページにリダイレクトした後

xmlを更新して表示するので、ページを読み込む必要があります。 (私は現在どのようにこれを変更することはできません)

しかし、私は何をするかは、ページが一度リダイレクトされた後、再びリダイレクトするか、一般に別のページを読み込むことです。

xmlリンクについては、その一部がテキストボックスで作成されているため、動的になります。私は解決策を見つけるために間違ったキーワードを探している場合

私は現在、これが実際に可能であるのであれば、私は思ったんだけど、この

//please note that username is a textbox, I've just left it out 
<script runat = "server"> 
void Button_Click(Object sender, EventArgs e) 
{ 
    var url = "http://website.com/scripts/" + username.text "/value/0" 
    try 
    { 
     Response.Redirect(url, true); 
    } 
    catch(Exception ex) 
    {//From what I learnt, adding true to redirect throws an exception, 
    //which is how I tried executing another redirect, but it doesn't seem to 
    //to load the first direct, and skips straight to this, I also put this 
    //in finally, because it seemed more appropriate to no avail 
     Response.Redirect(someurl, true); 
    } 
} 

の線に沿って何かを持って、私も疑問に思います。

私はこれに少し時間をかけていますが、何らかの解決策には至っていませんが、Web開発の初心者です。

また、私はC#がASPでどのように動作するのか理解していますが、必要に応じてjavascriptやVBで追加する方法を知りたいと思います。

ご協力ありがとうございました

編集:解決策!

私はjavascriptを使用してxmlリンクにテキストボックス値を追加し、それを要求し、ユーザーを表示せずに(この場合はユーザーを表示する必要はありません)管理しました。

その後、ポップアップが成功したことを確認してからページを再読み込みします。

、それは非常に自明ですが、私がやったことを追加しましたチェックのために

url = "website"; 
var xmlHttp = new XMLHttpRequest(); 
xmlHttp.open("GET", url, true); 
window.alert("success"); 
return true;//this reloads the page, that or just window.location.reload(); 

だった、私は、ユーザー名が有効なユーザー名であることを確認することができるかどうか、および故障テキストとポップアップ場合はありません。

+0

問題は少し曖昧です。あなたがリダイレクト内でリダイレクトを行うことができるかどうかを尋ねるなら、はい。 – Baahubali

+0

ああ申し訳ありませんが、どうすればいいですか? –

+0

これはどのような問題ですか?最初のリダイレクトページでアクションが実行されたら、必要に応じてResponse.RedirectまたはServer.Transferをもう一度呼び出すだけです。 – Baahubali

答えて

1

Response.Redirect(...)が実際にどういうことを誤解しているようです。私の意見では、メソッド名は少し誤解を招く。これは、現在実行中のリクエストに対する何らかの形でResponseが、リクエストしているブラウザ以外に送信されることを示唆しています。これはではなく、ケースです。名前はResponse.SendRedirectResponseToBrowserだったかもしれません。なぜなら、それはResponse.Redirectのためです。

ですから、Response.Redirect(url)を行うときには、あなたのページを実行しているサーバーを語っている供給urlGET要求を行うには、ブラウザを伝える、ブラウザにレスポンスを送信する必要があります。ブラウザはそれを行い、その時点でページに別のRedirectが含まれている必要があり、ブラウザに次にどこに行くかをさらに指示する必要があります。

この場合、"http://website.com/scripts/" + username.text "/value/0"のページにパッチを適用する必要があり、リクエストを処理した後に、次に表示するURLでリダイレクト応答を送信する必要があります。

そのページを制御できない場合は、これを他の方法で解決する必要があります。いくつかのオプション:

  • "http://website.com/scripts/" + username.text "/value/0" URLを要求するためにajaxを使用してください。完了後、次に表示するURLにページの場所を設定します。
  • _blankターゲットでhttp://website.com/....のURLを開き、次のページの場所に設定します。
  • http://website.com/.... URLをリクエストするコードバックメソッドでSystem.Net.Http.HttpClientを使用して、を次ににリダイレクトします。つまり、サーバーは、ボタンクリックの処理の一部としてURLを要求します。

注:

  • http://website.com/.... urlは、いくつかの状態を更新(データベースまたは類似で店舗のようないくつかの変更)、あなたはPOST要求、ないGETを使用して、それを要求する必要があります。 GET要求はキャッシュレスポンスを得ることができます。つまり、サーバーが実際に要求を見たことがないため、処理が行われない可能性があります。
  • このようなURLを組み合わせると、"http://website.com/scripts/" + username.text "/value/0"は危険に見えます。あなたは最小のURLでusername.text - HttpUtility.UrlEncode(username.text)をエンコードする必要があります。入力されたユーザー名が実際に有効なユーザー名であることを最初に検証する方が良いでしょう。
+0

誤解を解消してくれてありがとう、私は大学でWeb開発のコンセプトを多く取り上げたことはありませんでした。現在は、より良い基礎から適切にWeb開発を学ぶ贅沢はありません。私は正直なところ、このサーバーがどのように作られたのか気に入らず、雇用前に完了しました。プラス私はWeb開発とサーバー開発の私の小さな知識を全体として私はそれを再構築しようとしたくないと思います。 xmlのリンクは非常に恣意的です。私は実際にはサーバを検索していました。これは一度も使われていないメソッドです。実際の使用は真偽値です。 –

+0

私は先に進み、これもやってもらうでしょう、再び私は説明を感謝します。 –

+0

ありがとうございました!私はJavaScriptを使用してページをリクエストし、nullを送信し、最後に小さなポップアップの後にページを更新しました。それは私が必要とした方法で動作します。 –

0

XMLを含むレスポンスにRefresh headerではなくメタリフレッシュ要素)を追加できます。ヘッダーでは、別のURLとリダイレクトするまで待機する秒数を指定できます。

+0

Response.AddHeader( "REFRESH"、 "2、URL =" website "");最終的にはうまくいかなかったようですが、私はこれを正しい方法ではないと推測しています。 –

0

バックエンドエラー処理の代わりにJavaScript(フロントエンド)を使用する必要があります。別のページに移動するためです。約束を使用して例外を処理する

+0

ありがとう私は明日行って、私は文字通り仕事を終えたので、確かにうまくいけば、答えとしてマークします –

+0

あなたの答えをありがとう、これは間違いなく、 –

関連する問題