[英]After Redirecting to a page after loading another page
目前我有一個頁面,當您填寫一個文本框並單擊一個按鈕時,它會將您重定向到另一個頁面。
該頁面需要加載,因為它會更新並顯示 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();
對於附加檢查,我將查看是否可以驗證用戶名是否為有效用戶名,如果不是,則彈出失敗文本。
您似乎對Response.Redirect(...)
實際作用有誤解。 在我看來,方法名稱有點誤導。 它表明以某種方式對當前正在執行的請求的Response
將被發送到請求瀏覽器之外的其他地方。 情況並非如此。 該名稱也可以是Response.SendRedirectResponseToBrowser
,因為這就是Response.Redirect
所做的。
因此,當您執行Response.Redirect(url)
您是在告訴正在執行您的頁面的服務器應該向瀏覽器發送響應,告訴瀏覽器對提供的url
執行GET
請求。 然后瀏覽器會這樣做,此時該頁面需要包含一個單獨的Redirect
,以便進一步告訴瀏覽器下一步要去哪里。
在這種情況下, "http://website.com/scripts/" + username.text "/value/0"
需要進行修補,以便在處理請求后,它還將發送重定向響應接下來要顯示的網址。
如果您無法控制該頁面,則必須以其他方式解決此問題。 一些選項:
ajax
請求"http://website.com/scripts/" + username.text "/value/0"
url。 然后完成后將頁面位置設置為您接下來要顯示的網址。_blank
目標中打開http://website.com/....
url,然后將位置設置為下一頁。System.Net.Http.HttpClient
來請求http://website.com/....
url,然后進行重定向。 這意味着服務器請求 url 作為處理按鈕點擊的一部分。筆記:
http://website.com/....
url 更新了一些狀態(比如在數據庫中存儲一些更改或類似的),那么你應該使用POST
請求而不是GET
來請求它。 GET
請求可以獲得緩存的響應,這意味着服務器可能永遠不會真正看到請求,因此不會進行任何處理。"http://website.com/scripts/" + username.text "/value/0"
看起來有風險。 您應該至少對username.text
進行 url 編碼 - HttpUtility.UrlEncode(username.text)
。 更好的是首先驗證輸入的用戶名實際上是一個有效的用戶名。您可以向包含 XML 的響應添加Refresh 標頭(不是元刷新元素)。 在標頭中,您可以指定另一個 URL 和重定向前等待的秒數。
我想它應該使用 JavaScript(前端)而不是后端錯誤處理,因為它轉到另一個頁面。 使用promise處理異常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.