前端ajax或axios发送数据后端实体

北京治疗扁平疣医院 http://pf.39.net/bdfyy/bdfjc/210314/8744647.html

小喵最近在学习用java做前后端数据双向交互。

用到最多的就是ajax和vue组件的axios来传数据到后端。

首先,小喵在学习的过程中发现如果在数据传输过程中各种报错的话,可能是在哪些方面的。

报错原因

情况1,有可能是js都没有获取到数据(表单数据,或者是其他数据)。这个时候需要通过html的开发者工具里,小喵一般是用console.log()来输出结果看是否会是js没有获取到表单数据

情况2,有可能是js获取到数据,但是并没有成功发送数据出去。遇到这种情况,小喵会打开html的开发者工具的Network里,看对应的数据包的错误代码是否是错误,如果是就可能是js获取到数据但没有发送成功,如果是正确就是发送成功。

(Network里,看发送数据包的代码)

下拉后可以看到对应的具体数据

如果是错误,前台发送错误的原因有哪些呢?

检查ajax的type是post还是get,然后去看后台是否对应写错了。

检查ajax的url地址是否写对,再去看后台接受的url地址。

检查ajax的dataType是什么类型?一般是json。一般有6种,xml,html,script,json,jsonp,text

contentType:application/json;charset=UTF-8这句最好加上

发送json数据时,有几种写法。

法1

写成类的方式

varjob={};job.jobid=jobid;job.jobname=jobname;

data:JSON.stringify(job)//这一句是在ajax里面的

JSON.stringify()的作用是将json字符串转json对象

法2

把类直接写成json字符串,然后用JSON.stringify()

data:JSON.stringify({jobid:jobid,jobname:jobname})

情况3,前端发送成功,后台接受数据失败。

小喵就遇到过这种问题。

如下图

小喵的后台调试时,已经进入了函数,但是返回ID为空。后来经过小喵的仔细排查发现,错误的原因竟然是实体类的成员变量写成了private!要注意用实体类来接受时一定要写成public。除此之外,大家一定要注意实体类成员变量的参数类型,最好都设成String!ajax不能传后台没有的参数,或者实体中没有的成员变量。

还有就是,这句是小喵在别人的博客上看到的一段:

RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。在ajax请求往往传的都是Json对象,用JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType:“json”,contentType:”application/json”这样就可以轻易的将一个对象或者List传到Java端,使用

RequestBody即可绑定对象或者List.

以上这些都是可能遇见的报错原因。

除了以上之外,要小心要留意,取的实体类名别设job_id,jobId这种,可能会报因为驼峰命名法而产生的错误。

实例

小喵创建的表单,表单就是一般的表单啦,没啥需要注意的。

后台java代码

实体类

这里的SysJobentity几乎跟上面的FormEntity一样,唯一不同的就是id是设的int类型,变量是私有变量。

对了,传实体类是不用加上注解

param的!只有传变量时才需要加上。

如以下两个图,也是在别人的博客上逛到的

以上做完,就实现了我们的ajax传数据到后台了。

axios是这样的形式了

其实ajax弄懂基本就没啥问题了

但一开始axios还总是写错了好多了的。

小喵还专门去CSDN上搜了搜axios和ajax的区别。

区别

axios是通过promise实现对ajax技术的一种封装,就像jQuery实现ajax封装一样。简单来说:ajax技术实现了网页的局部数据刷新,axios实现了对ajax的封装。axios是ajaxajax不止axios。

其实ajax作为异步加载,小喵是非常喜欢用的,比其他方法好用多了,这里有一个很生动形象的例子。

js是单线程的,由于执行ajax请求会消耗一定的时间,甚至出现了网络故障而迟迟得不到返回结果;这时,如果同步执行的话,就必须等到ajax返回结果以后才能执行接下来的代码,如果ajax请求需要1分钟,程序就得等1分钟。如果是异步执行的话,就是告诉ajax代码“老兄,既然你迟迟不返回结果,我先不等你了,我还有一大堆代码要执行,等你执行完了给我说一下”。

小喵的第二次发文,希望大家能轻松写代码,没有bug没有bug!




转载请注明:http://www.aierlanlan.com/rzdk/3324.html