3

我正在从 javascript 函数发出 ajax POST 请求:

function UpdateMetrics() {
   $.ajax({
              type: "POST",
              url: "MyHandler.ashx?Param1=value1",
              data: "{}",
              contentType: "text/json; charset=utf-8",
              dataType: "text",
              success: function (msg) {
                  var jsonUpdatedData = msg;
                  ...
              }
          });
}

从我的处理程序,我发送 json 字符串:

context.Response.write(json);

我想我会得到它msg

我还想发送其他字符串(计数)。因此,我尝试将标头信息与 json 数据一起使用。所以我添加了这一行:

context.Response.Headers.Add("MaxCount",Convert.ToString(tempList.Count)); 

如果这是正确的方法,我如何在我的success函数中访问它?

4

2 回答 2

4

要访问函数中的标头,请在success函数中再添加 2 个参数,即状态代码和 jqXHR 对象,您可以在api.jquery.com阅读文档。

因此,您的函数应如下所示:

success: function (msg, status, jqXHR) {
    var jsonUpdatedData = msg;
    ...
}

但是,正如评论中指出的那样,最好不要使用标头发送数据。您可能应该将其包含在您发送的 json 中。

您还需要通过设置告诉 jQuery 将响应解释为 json

dataType: "json"

否则,它只会作为文本返回给您。

于 2012-11-26T05:00:38.900 回答
0

您可以使用 getResponseHeader 方法实现在 ajax 发布成功后获取标头数据的要求,请参阅以下代码片段。

function UpdateMetrics() {
var callback =  $.ajax({
          type: "POST",
          url: "MyHandler.ashx?Param1=value1",
          data: "{}",
          contentType: "text/json; charset=utf-8",
          dataType: "text",
          success: function (msg) {

          var jsonUpdatedData = msg;
        var headerdata = callback.getResponseHeader("MaxCount"); 
// Where MaxCount is name provided in the header.
   ...
          }
      });
}

谢谢

于 2012-11-26T05:06:33.043 回答