在javascript中访问ajax POST响应

时间:2012-11-26 04:53:17

标签: javascript jquery asp.net

我正在从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中得到它。

我也想发送其他字符串(count)。所以我试图使用标题信息和json数据。所以我添加了这一行:

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

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

2 个答案:

答案 0 :(得分:2)

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

所以,你的功能应该如下:

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

但是,正如评论中指出的那样,最好不要使用标头来发送数据。你应该把它包含在你发出的json中。

您还需要告诉jQuery通过设置

将响应解释为json
dataType: "json"

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

答案 1 :(得分: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.
   ...
          }
      });
}

由于