【问题标题】:How to see what dataType is requested by an ajax call in asp.net api如何查看asp.net api中的ajax调用请求什么数据类型
【发布时间】:2017-01-03 03:33:09
【问题描述】:

在 ASP.NET API 中,当您在 ajax 中设置请求的数据类型时,如何获取 ajax 调用请求的数据类型?

$.ajax({
    url: url,
    data: params,
    dataType: "xml",
    type: "GET",
    statusCode: {
        200: function (data) {

            }
        }

然后,在我的控制器中,我想知道我请求的是 XML 还是 JSON。

提前致谢

【问题讨论】:

  • 你能解释一下你想知道的吗?
  • 刚刚编辑了问题。所以,在控制器中,我希望能够看到我在 dataType: ("xml" or "JSON") 之后在 ajax 请求中输入的内容
  • 数据类型值只需在您的请求中添加content-type 标头。您的控制器将检查此标头以选择要执行的操作。

标签: c# jquery asp.net ajax api


【解决方案1】:

如果我没记错的话,此信息将在您的 HTTP 请求中翻译为“接受”标头。我不是 100% 确定,因为这也可能只是 JQuery 保存的信息,以更好地解码答案。无论如何,Ajax 设置中还有一个accepts 参数,它肯定会设置请求的“接受”标头。然而,JQuery 的文档说 accepts 参数默认为一个取决于 dataType 参数的值,所以我很想说我的第一个猜测是正确的。

要从控制器中检索标头,只需调用:

IEnumerable<string> headerValues = request.Headers.GetValues("MyCustomID");
var id = headerValues.FirstOrDefault();

(有关此方法的错误处理,请参阅this Answer

【讨论】:

    【解决方案2】:

    这在接受 http 标头中 - asp.net webapi 将为您完成大部分内容类型协商 - 请参阅 here

    jQuery 会将其作为 application/json 或 application/xml 放在接受标头中,您可以手动将其从 request.Headers 中取出

    【讨论】:

    • 是的。准确地说是在 Request.Headers.Accept.First().MediaType 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2016-01-08
    相关资源
    最近更新 更多