2012-09-07 14 views
0

從jQuery AJAX帖子調用的我的.ashx Handler偶爾不會接收HttpContext.Request中的表單元素。jQuery serializeArray + ajax.post IE(僅)偶爾不會將表單元素傳遞給ashx Handler

發生這種情況時,請求只包含ViewState元素或者根本沒有元素。它僅在IE7,IE8和IE9(每個瀏覽器有幾千次點擊)的情況下偶爾出現故障。我無法使用IE自己重現這一點,「最」IE用戶(以及所有其他用戶)不會遇到此問題。

的Javascript:

var data = $('form').serializeArray(); 
$.ajax({ 
      type: "POST", 
      async: false, 
      dataType: "text", 
      url: "handler.ashx", 
      data: data 
     }); 

C#(handler.ashx):

void IHttpHandler.ProcessRequest(HttpContext context) { 
    var collection = SetCollection(context.Request); 

    // collection sometimes has just ViewState elements; 
    // sometimes it has no items 
    } 

private NameValueCollection SetCollection(HttpRequest request){ 
    return request.Form; 
} 

其他信息:該網站是一個Web場帶有負載平衡器的一部分。使用.net 3.5。 我讀過IE瀏覽器有不同的方式來生成請求頭;不確定這是否相關。

謝謝你的任何見解來解決我的問題。

回答

0

FIXED:此問題在Firefox中也存在,這有助於解決問題,因爲我可以使用Firebug。

此處理程序的構建是爲了將信息發佈到服務器,並在出現任何錯誤時拋出服務器異常(即javascript不需要響應)。 Firefox和IE期望迴應javascript; Firefox失敗(引發服務器錯誤,但仍然正常); IE瀏覽器崩潰導致瀏覽器崩潰。

我在處理程序的末尾添加了一個context.Response.write(「true」),它不再拋出錯誤或死亡。

希望這可以幫助其他人在路上。

+0

你是如何重現它的?我有幾乎相同的問題 – Ruutert

+0

我看到使用Fiddler的請求。 – SAF

相關問題