博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax post 请求415\ 400 错误
阅读量:4308 次
发布时间:2019-06-06

本文共 1346 字,大约阅读时间需要 4 分钟。

今天用ajax 向后台发送 post请求时,出现了两个问题:

  1, 发送请求后,控制台 返回  Unsupported media type-415(不支持的媒体类型),这时突然想起来,post 请求要设置请求头,于是 写了 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded.'); 再次发送请求,还是报同样的错误,Unsupported media type-415。查了一下,原来,后端对请求的Content-type 设为了json,  Access-Control-Request-Headers: content-type, 这时要把 content-type 设为json .  xhr.setRequestHeader('Content-Type', ' application/json');

  在设置请求头的时候,还知道了原来第一个参数“Content-Type”, 是不区分大小写的,写成‘content-type’ 也是可以的。当然,设置请求头还要注意以下问题:

    1,它必须在open()方法之后,send()方法之前调用,否则会抛错。

    2,如果设置多个请求头时,可以多次调用setRequestHeader(),后面的设置并不会覆盖掉前面的设置,而是采用叠加的方式。

    3, 两个参数之间用逗号,隔开。 有时我不经意间写成了分号:, 造成错误。

  2,改完之后,发送请求,又报错了 ,但这次是400  bad  request,  400指的是请求无效(请求有语法问题或者不能满足请求),也就是无法获取到资源, 这主要是后台要求传入的数据和前台我们传入的数据不匹配,后台无法解析数据,进行查询,从而返回数据。但我只传递了一个对象。网上搜了一个解决办法:对我们要传递的数据进行json 序列。

var data = JSON.stringify({    "page": 0,    "limit": 20,    "shopId": 1});

3, 再发送一次请求,终于请求成功。 代码如下:

var xhr = new XMLHttpRequest();var url ="http://192.168.1.89:8080/server/";var data = JSON.stringify({      "page": 0,      "limit": 20,      "shopId": 1,      "timeType": 3,});xhr.open("POST", url );xhr.setRequestHeader('Content-Type','application/json');xhr.onload = function(){    console.log(xhr.responseText) // 这里要用xhr.respnseText 获取数据,我经常给函数传一个data参数,获取数据,造成错误}xhr.send(data)

 

转载于:https://www.cnblogs.com/SamWeb/p/6211134.html

你可能感兴趣的文章
Git基础(三)--常见错误及解决方案
查看>>
Git(四) - 分支管理
查看>>
PHP Curl发送数据
查看>>
HTTP协议
查看>>
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
laravel 定时任务秒级执行
查看>>
浅析 Laravel 官方文档推荐的 Nginx 配置
查看>>
Swagger在Laravel项目中的使用
查看>>
Laravel 的生命周期
查看>>