欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ajax-Servlet前后端交互,如何进入suceess/error回调函数

程序员文章站 2024-03-23 15:50:16
...

一般交互使用Json传输数据,Ajax(jq)代码大致如下

Ajax-Servlet前后端交互,如何进入suceess/error回调函数

声明了dataType:"json"就表示从后台获取的数据是json格式的(json对象

也就是success(data) / error(data) 的参数data是json对象

 

后台

要知道后台Servlet是不能返回json对象的,返回的是json字符串或者其他类型的数据

在代码执行没有报错的情况下:

1. 如果后台返回的是json字符串,那么就可以对应成json对象,那就是成功了,进入success

2. 如果后台返回的是其他数据,比如一般的字符串,那就不能转成json对象,就是错误失败了,进入error

注意:返回纯数字或纯数字字符串可以被当作json字符串,也会success

 

所有后台Servlet可以通过控制返回数据的类型来决定前端调用success/error哪个回调方法的

在声明dataType:"json"的情况下:

1.

String jsonString = "{\"true\":\"send idCode successfully\"}";      // 这是个json字符串

response.getWriter().write(JSONObejct.fromObject(jsonString).toString());   // 返回过程会被转为json对象

// response.getWriter().write(jsonString);  就是等价于第二个语句

后台返回的是json字符串,jsonString是json字符串,JSONObejct.fromObject(jsonString)是json对象,

JSONObejct.fromObject(jsonString).toString()又是json字符串。所有第三个语句就是等价的,我们直接用第三句就可以了。

到了前端的时候,json字符串会被转成json对象,赋值给data参数,这是就成功进入suceess了

Ajax-Servlet前后端交互,如何进入suceess/error回调函数

 

2.

如果后台传的不是json字符串,传的是其他的,不能转成json对象的数据,那就是错误,进入error

比如我返回的是response.getWriter().write("test_error");    //  ”test_error"不是json字符串

Ajax-Servlet前后端交互,如何进入suceess/error回调函数

不是就进入了error(data), 传递的字符串在data这个json对象的resposeTexts属性中

 

总结:

返回对的类型(json字符串),让前端调用success(data)方法,数据就是data这个json对象。

返回错的类型(非json字符串),让前端调用error(data)方法,数据在data这个json对象的responseText属性中。

 

补充: Json传输之前端Ajax(Jq)后台Servlet交互

            Json字符串和json对象的区别,转化