AJAX------ajax中contentType和dataType的区别

ajax介绍地址

contentType(给服务端发送数据时的数据格式)

  • 类型:布尔值字符串
  • 默认:'application/x-www-form-urlencoded; charset=UTF-8'
  • 将数据发送到服务器时,请使用此内容类型。默认为“application / x-www-form-urlencoded; charset = UTF-8”,这在大多数情况下都适用。如果您明确地将内容类型传入$.ajax(),则始终将其发送到服务器(即使没有数据发送)。从jQuery 1.6开始,您可以传递false告诉jQuery不设置任何内容类型标头。 注意: W3C XMLHttpRequest规范规定字符集始终为UTF-8; 指定另一个字符集不会强制浏览器更改编码。注:对于跨域请求,内容类型设置为application/x-www-form-urlencodedmultipart/form-datatext/plain将触发浏览器发送预检OPTIONS请求到服务器。
application/x-www-form-urlencoded
multipart/form-data
text/plain

DataType(接收时所期望的数据类型)

  • 类型:字符串
  • 默认值:Intelligent Guess (xml, json, script, or html)
  • 您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回)。可用的类型(以及作为成功回调的第一个参数传递的结果)是:
"xml":返回可以通过jQuery处理的XML文档。

"html":以纯文本形式返回HTML; 包含的脚本标记在插入DOM时进行评估。

"script":将响应评估为JavaScript并将其作为纯文本返回。通过将查询字符串参数附加_=[TIMESTAMP]到URL来禁用缓存,除非该cache选项设置为true。注意:这会将POST转换为GET以获取远程域请求。

"json":将响应评估为JSON并返回JavaScript对象。"json"具有回调占位符的跨域请求例如?callback=?使用JSONP来执行,除非请求包括jsonp: false在其请求选项中。JSON数据以严格的方式解析; 任何格式错误的JSON都会被拒绝,并抛出一个解析错误。从jQuery 1.9开始,空响应也被拒绝; 服务器应返回响应null或{}代替。(有关正确的JSON格式的更多信息,请参阅json.org。)

"jsonp":使用JSONP加载JSON块。"?callback=?"在URL末尾添加一个额外内容以指定回调。通过将查询字符串参数附加"_=[TIMESTAMP]"到URL来禁用缓存,除非该cache选项设置为true。

"text":纯文本字符串。

多个空格分隔值:从jQuery 1.5开始,jQuery可以将dataType从Content-Type标头中收到的数据转换为您需要的数据类型。例如,如果要将文本响应视为XML,请使用"text xml"dataType。您还可以发出JSONP请求,将其作为文本接收,并由jQuery解释为XML : "jsonp text xml". 类似地,一个简写字符串,例如"jsonp xml"将首先尝试从jsonp转换为xml,如果失败,则从jsonp转换为text,然后从text转换为xml。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当在使用 Ajax 发送 POST 请求时遇到 "403 Forbidden-null" 错误,通常是由于 CSRF(Cross-Site Request Forgery)保护机制引起的。 Django 默认开启了 CSRF 保护,要在发送非 GET 请求时包含正确的 CSRF Token。你可以通过以下几种方法来解决这个问题: 1. 在 Ajax 请求的头部包含 CSRF Token: ```javascript var csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value; $.ajax({ url: 'your-url', type: 'POST', headers: { 'X-CSRFToken': csrftoken }, data: JSON.stringify(yourData), contentType: 'application/json', dataType: 'json', success: function(response) { // 处理成功响应 }, error: function(xhr, errmsg, err) { // 处理错误响应 } }); ``` 2. 使用 Django 提供的 `csrf_exempt` 装饰器来跳过 CSRF 保护,但这不是推荐的做法,因为会降低安全性: ```python from django.views.decorators.csrf import csrf_exempt @csrf_exempt def your_view(request): # 处理请求 ``` 3. 如果你使用的是 Django Rest Framework(DRF),可以在全局配置禁用 CSRF 保护: ```python # settings.py REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( # 其他身份验证类... ), 'DEFAULT_PERMISSION_CLASSES': ( # 其他权限类... ), 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', ), 'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( # 其他身份验证类... ), 'DEFAULT_PERMISSION_CLASSES': ( # 其他权限类... ), 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', ), 'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( # 其他身份验证类... ), 'DEFAULT_PERMISSION_CLASSES': ( # 其他权限类... ), 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', ), 'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( # 其他身份验证类... ), 'DEFAULT_PERMISSION_CLASSES': ( # 其他权限类... ), 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', ), 'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', ), # 禁用 CSRF 保护 'DEFAULT_AUTHENTICATION_CLASSES': ( # 其他身份验证类... ), 'DEFAULT_PERMISSION_CLASSES': ( # 其他权限类... ), } ``` 希望这些解决方法可以帮助到你!如果问题仍然存在,请提供更多的代码和错误信息,以便我能够更好地帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绝世唐门三哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值