Ajax-Servlet前后端交互,如何进入suceess/error回调函数
一般交互使用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交互
上一篇: MySQL 数据库索引数据结构的选择
下一篇: MySQL高级-06:MySQL锁问题