2009-09-28 43 views
1

我只爲某些用戶收到一些js錯誤,並且每隔一段時間在一個使用相當多ASP.NET AJAX的頁面上。應該在重頁中避免ASP.NET AJAX?

該頁面還會執行一些激烈的SQL查詢和某些字符串操作以突出顯示搜索結果中找到的文本。

難道這是性能的結果嗎?在要求苛刻的情況下使用ASP.NET AJAX總是安全的,還是應該關注其他AJAX技術?

(通過我有時看到錯誤的方式):

消息:Sys.WebForms.PageRequestManagerServerErrorException:處理服務器上的請求時出現未知錯誤。從服務器返回的狀態代碼爲:12031

消息:Sys.WebForms.PageRequestManagerParserErrorException:無法解析從服務器收到的消息。此錯誤的常見原因是,通過調用Response.Write(),響應篩選器,HttpModules或服務器跟蹤已啓用來修改響應時。 詳細信息:解析「'附近的錯誤。

回答

1

已經知道ASP.NET AJAX不是性能最密集的方法,但這就是你所得到的結果,我想用它來交換實現的簡單性。

我知道你不允許在更新面板中做任何Response.Writes。這會導致你的第二個錯誤。

+0

Yeap:Response.Write()和document.write一樣,它會清除整個頁面並啓動新文檔。 – Tarik 2009-09-29 16:52:45

1

這種特殊的例外是非常常見 並且可以由以下的任何 之一引起:

1.呼叫至回覆於(): 通過調用回覆於()直接您正繞過ASP.NET 控件的正常 呈現機制。你寫的位直接去 沒有 進一步處理(呃,主要是...)。 這意味着UpdatePanel不能以 對數據進行特殊格式的編碼。

2.響應濾波器: 類似的Response.Write(),響應濾波器可以以這樣的方式使 的UpdatePanel不會知道改變 渲染。

3. HttpModules: 同樣,與Response.Write()和響應過濾器相同。

4.服務器啓用跟蹤: 如果我打算再次實施跟蹤,我會做不同的看法。 跟蹤使用 Response.Write()有效寫出,因此我們使用 UpdatePanel的特殊格式 。

5.呼籲對Server.Transfer的(): 不幸的是,沒有辦法檢測到Server.Transfer的()是 調用。這意味着當有人呼叫Server.Transfer()時,UpdatePanel 不能做任何智能事情。發送回客戶端的 響應是 從您轉移到的頁面的HTML標記。由於其HTML和 不是特殊格式,因此不能被解析爲 ,並且出現錯誤。

完成POST:ASP.NET AJAX and Sys.Webforms.PageRequestManagerServerErrorException

你可以抓住它通過使用Visual Studio調試功能會導致錯誤的代碼。我不太瞭解,但也許可以提供幫助,Firebug也可以幫助您查看提交給服務器的服務器響應和數據。

這裏是一個視頻,你可以看到如何使用Firebug來調試Ajax。 See how I used Firebug to learn jQuery

但我不認爲應該在重載頁面中避免Asp.NET Ajax。那實際上Ajax代表的是什麼?我的意思是它也可以讓服務器發送小塊頁面,而不是再次請求整個頁面。