当前位置: 首页 > 知识库问答 >
问题:

AJAX请求中的内容类型和数据类型是什么?

陆野
2023-03-14

POST请求中的内容类型和数据类型是什么?假设我有这个:

$.ajax({
    type : "POST",
    url : /v1/user,
    datatype : "application/json",
    contentType: "text/plain",
    success : function() {

    },
    error : function(error) {

    },

contentType是我们发送的吗?那么我们在上面的例子中发送的是JSON,而我们收到的是纯文本?我真的不明白。

共有3个答案

仲孙翔飞
2023-03-14

看见http://api.jquery.com/jQuery.ajax/,这里提到了数据类型和内容类型。

它们都用于向服务器发出的请求中,以便服务器知道接收/发送什么样的数据。

钱志
2023-03-14

从jQuery留档-http://api.jquery.com/jQuery.ajax/

contentType向服务器发送数据时,请使用此内容类型。

dataType您期望从服务器返回的数据类型。如果未指定,jQuery将尝试根据响应的MIME类型推断它

“文本”:纯文本字符串。

因此,您希望contentType为application/json,数据类型为text

$.ajax({
    type : "POST",
    url : /v1/user,
    dataType : "text",
    contentType: "application/json",
    data : dataAttribute,
    success : function() {

    },
    error : function(error) {

    }
});
屠华辉
2023-03-14

contentType是您要发送的数据类型,因此Application/json; charset=utf-8是一种常见的类型,Application/x-www-form-urlencoded也是如此;charset=UTF-8,这是默认值。

dataType是您期望从服务器返回的内容:jsonhtmltext,等等。jQuery将使用它来确定如何填充success函数的参数。

如果你发布了以下内容:

{"name":"John Doe"}

期待回来:

{"success":true}

那么你应该:

var data = {"name":"John Doe"}
$.ajax({
    dataType : "json",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        alert(result.success); // result is an object which is created from the returned JSON
    },
});

如果您期待以下内容:

<div>SUCCESS!!!</div>

那么你应该做:

var data = {"name":"John Doe"}
$.ajax({
    dataType : "html",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});

还有一个——如果你想发帖:

name=John&age=34

然后不要字符串化数据,并执行:

var data = {"name":"John", "age": 34}
$.ajax({
    dataType : "html",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8", // this is the default value, so it's optional
    data : data,
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});
 类似资料:
  • 下面是我的Ajax请求: 如果我没有精确的内容类型,我就无法再看到Firebug的请求。相反,当我添加内容类型时,我可以看到POST请求(由于我的URL是false而出现错误),但在我的头中,内容类型默认是URL编码的表单。 我想要的是通过JSON数据发送表单的详细信息。谢谢你的帮助

  • 我想更好地了解一下Net中的WebApi,以及如何用ajax正确地调用它。关于我的开发环境的信息很少:我正在使用。net 4.0、visual studio 2010和Jquery。 型号: WebApi: 客户端: V1(不工作,返回错误405): V2(工程): 为什么我在添加并将数据更改为时会出现错误,但当我删除内容类型并在数据选项中发送对象时它会起作用。

  • 问题内容: 我有一个烧瓶应用程序,具有以下视图: 但是,这仅在请求的内容类型设置为时才有效,否则dict 为None。 我知道请求主体为字符串,但我不想每次客户端忘记设置请求的内容类型时都将其解析为字典。 有没有办法假设每个传入请求的content- type是?我想要的就是始终访问有效的字典,即使客户端忘记将应用程序的内容类型设置为json。 问题答案: 使用并设置为: 从文档中: 默认情况下,

  • 问题内容: 我一直在弄乱JSON一段时间,只是将其作为文本推出,它并没有伤害任何人(据我所知),但是我想开始做正确的事情。 我见过 这么 多所谓的“标准”为JSON内容类型: 但是哪一个是正确的,还是最好的?我发现在它们之间存在安全性和浏览器支持问题。 我知道有一个类似的问题, [如果RESTAPI返回JSON,则为哪种MIME类型?,但我想要一个更有针对性的答案。 问题答案: 对于JSON文本:

  • TP5提供了很多请求判断的方法,如下: // 是否为 GET 请求 $request->isGet(); // 是否为 POST 请求 $request->isPost(); // 是否为 PUT 请求 $request->isPut(); // 是否为 DELETE 请求 $request->isDelete(); // 是否为 Ajax 请求 $request->isAjax();

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1722