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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenbetter1996/article/details/82773025

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

声明了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了

2.

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

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

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

总结:

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

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

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

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

猜你喜欢

转载自blog.csdn.net/chenbetter1996/article/details/82773025