簡體   English   中英

__doPostBack()是否有可能發送GET請求?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM