在javascript中访问ajax POST响应
我正在从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
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将使用它尝试将响应的值转换为指定的类型。它并不总是仅仅是文本