2012-07-01 94 views
3

我有以下要求:如何使用頭請求將參數從Ajax傳遞到C#?

var response = $.ajax({ 
    type: "POST", 
    contentType: "application/x-www-form-urlencoded", 
    url: this.AgentServiceUrl + "/" + methodName, 
    data: data, 
    async: this.Async, 
    success: function (xml, textStatus) { if (successHandler != null) successHandler(state, $.xml2json(xml), textStatus); }, 
    error: function (xmlHttpRequest, textStatus, errorThrown) { if (errorHandler != null) errorHandler(state, xmlHttpRequest, textStatus, errorThrown); } 
}); 

我想補充一個變量這一請求頭,並使用它在C#中,

我嘗試了很多方法,但我都不能消耗它在C#:

  1. beforeSend: function (req) 
    { 
        req.setRequestHeader("AgentGUID", this.AgentGUID); 
    }, 
    
  2. parameters:

你能幫我嗎?我不想改變在C#部分,我只是想用類似的功能:

(System.Web.HttpContext.Current.Request.Headers["someHeader"] 

回答

4

,你想你beforeSend應該工作,但你沒有得到服務器端的值的原因在於,該方法調用this.AgentGUID調用undefined,因爲this在該上下文中指向另一個對象(最有可能是ajax請求對象)。

通過在您的ajax調用之外定義一個變量,您的問題將被修復。

var me = this; 
var response = $.ajax({ 
    ... 
    beforeSend: function (req) 
    { 
     req.setRequestHeader("AgentGUID", me.AgentGUID); 
    }, 
    ... 
}); 
+0

太棒了,謝謝! –

+0

您的服務器端代碼(c#代碼)是正確的。只需使用「AgentGUID」鍵即可獲得您的價值。 –

相關問題