Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中访问ajax POST响应_Javascript_Jquery_Asp.net - Fatal编程技术网

在javascript中访问ajax POST响应

在javascript中访问ajax POST响应,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我正在从javascript函数发出ajax POST请求: function UpdateMetrics() { $.ajax({ type: "POST", url: "MyHandler.ashx?Param1=value1", data: "{}", contentType: "text/json; charset=utf-8", dataTy

我正在从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
函数中访问它?

要访问
success
函数中的标题,请在函数中再添加两个参数,即状态代码和jqXHR对象,您可以在中阅读文档

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

success: function (msg, status, jqXHR) {
    var jsonUpdatedData = msg;
    ...
}
然而,正如评论中指出的,最好不要使用头来发送数据。您可能应该将其包含在发送的json中

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

dataType: "json"

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

您需要在ajax post成功中获取标题数据,可以使用getResponseHeader方法实现。请参阅下面的代码片段

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.
   ...
          }
      });
}

谢谢

我不建议在响应标题中返回数据。如果必须返回count参数,为什么不将其附加到json中?或者,如果您的json正在返回一个数据数组,为什么不在javascript中获取array.length?您可以像newdata={'data':json,'count':count}那样发送它,发送新数据而不是json。不建议通过标头发送。实际上,
计数
是一些不同的计数。它与json字符串无关。如果来自服务器的响应具有有效的内容类型,则无需设置
数据类型。jQuery将使用它尝试将响应的值转换为指定的类型。它并不总是仅仅是文本