3

我有以下要求:

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

1 回答 1

4

beforeSend应该按照您的意愿工作,但是您没有在服务器端获得值的原因是this.AgentGUID在此方法调用中是undefined因为this在该上下文中指向另一个对象(很可能是 ajax 请求对象)。

通过在 ajax 调用之外定义一个变量,您的问题将得到修复。

var me = this;
var response = $.ajax({
    ...
    beforeSend: function (req)
    {
        req.setRequestHeader("AgentGUID", me.AgentGUID);
    },
    ...
});
于 2012-07-01T12:12:27.540 回答