[英]Is it possible that __doPostBack() would ever send a GET request?
我在telerik RadGrid上遇到問題,我想啟用多行選擇。 每當行被選中或取消選中時,我也想去服務器。 我創建了一個javascript函數來處理Grid的客戶端事件(OnRowSelected和OnRowDeSelected)。 函數如下所示:
function onOperationRowSelected(sender, eventArgs) {
__doPostBack("<%=myControl.ClientID %>", "rowSelected:" + eventArgs.get_itemIndexHierarchical());
}
另一個函數非常相似,唯一的區別是它發送字符串“ rowDeselcted”而不是“ rowSelected”。
在Page_Load上,我使用“ IsPostBack”檢查請求是否為Post請求,如果是,則檢查是否為rowSelected或rowdeselected。
我的問題是,當我在網格上選擇第一個原始數據時,會發生Post請求(這是預期的),但是,當我選擇第二行時,會發出GET請求,這(顯然)將導致IsPostBack返回false。
我在這里想念什么?
編輯:我只是檢查了Request對象,發現HttpMethod屬性值為“ POST”。 為什么是HTTP POST請求,而IsPostBack返回false?
該函數遵守<form>
的動作。 這是__doPostBack的作用:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
因此,它將執行表單設置要執行的所有操作,通常只是將其發布在asp.net中。
那有可能嗎? 是的,絕對,我不確定為什么發生在您的情況下。
在沒有看到網格生成的標記的情況下,我假設它使用帶有javascript應用的單擊處理程序的鏈接來進行回發。 我認為,最有可能的罪魁禍首是一個JavaScript錯誤,該錯誤阻止了處理程序觸發,從而為您提供了處理程序所應用的錨點的默認行為,在本例中為GET。 我能給您的最佳建議是在Firefox / Firebug中查看它,看看控制台中是否顯示任何錯誤。
就是說,您可能希望構建該應用程序,以便在禁用javascript的情況下可以正常工作,並且更正錯誤並弄清楚如果最終收到GET請求該如何響應。
您確定GET請求具有正確的事件參數嗎?
我認為還有其他要求發出GET的請求。 那個網格可能是一些AJAX魔術,一些資源或AJAX PageMethod調用或URL重寫之類的東西。
頁面名稱是default.aspx還是類似的名稱? 有時,在某些瀏覽器中(無法記住詳細信息)獲取圖像左右(無法記住確切的情況)會使瀏覽器也點擊“ samefolder /” URL,從而打開默認頁面。
使用FireBug檢查該請求,並查看其內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.