JSON工具类的构建(前端版本)
前言
在前后端交互的选择上,之前一直采用的是模板引擎(因为我只负责后端)。
而这次的一个算是作业吧,前后端都是我,所以就研究了一下JSON交互在java web的应用(主要是前端)。
优缺点
因为我是先写后端版本的,所以优缺点部分请跳转至JSON工具类的构建(后端版本)查看。
对比
因为我对js也是几天速成系列,所以框架型的jq以及ajax也是处于概念上的理解以及皮毛型的应用。
我所认识的主流的前端处理的ajax,所以就选用了ajax进行发送/接收解析json的处理。
需求拆分
因为没有打算深入学习前端,所以对需求的划分以及功能实现只限于满足这次的作业。
而我定义的功能/需求主要有两个
- 外部函数只需进行传入接口url以及数据,接收并初步解析结果
- 必须能进行get/post请求的发送以及接收
- 只需要发送单实体数据
格式设计
因为是请求型报文,所以只需要形成普通的json格式
{
"name": "name",
"password":"password",
"account":"account"
}
代码设计
因为我希望传入接口url以及数据既能完成数据的发送与接收,而个人觉得ajax的请求响应参数中不同的只是url以及发送/接收数据不同了(限本次的需要),所以就在内部构建了一个通用的ajax的函数。
实际代码
function transfer(url, data){
var result=new Array();
$.ajax({
type:"POST",
url:url,
dataType:"json",
async:false,
contentType:"application/json;charset=utf-8",
data:JSON.stringify(data),
success:function (dataReturn) {
var temp=JSON.stringify(dataReturn);
var dataObj = JSON.parse(temp);
result[0]=dataObj.status;
result[1]=dataObj.object;
}
});
return result;
}
代码思路
- 外部函数传入url以及数据data,data为对象类型的数据
- 构建ajax请求发送数据
- 因返回的json报文主要有两项:状态status以及数据object,所以采用数组型的返回结果
- 通过JSON.stringify以及JSON.parse将返回的json字符串转换成对象
- 根据键值拆分返回结果到3中定义的数组返回
- 调用函数通过result[0]判断获取操作结果,result[1]获取操作的详细数据
结果展示
function clickLogin() {
var userName=$("#userName").val();
var password=$("#password").val();
var data={};
data['number']=userName;
data['password']=password;
var result=transfer("/text_project/login",data);
if(result[0]=='200'){
window.location.href="/text_project/main";
}
else{
console.log("error");
}
}
不足之处
- get请求的需求没有解决,曾经花了7个小时去研究解决,但是因为对js以及ajax不熟悉,知道问题所在,但是没有解决
- 不同结果的处理没有过多的处理
- 原本想构建一个统一的网络访问函数,但是由于get请求的未解决这个想法失败了
后记
因为这次时间赶,所以只是几天速成系列,只追求能用。
但是通过这次的速成,也学习到了怎么去快速掌握或满足自身需要的一些方法,也算是接触到不同方面,能在以后的JAVA后端的学习中有所对比借鉴吧。
相关链接
这是我在前台发送/接收解析json的一点经验,我另外写了一篇文章:JSON工具类的构建(后端版本),配合使用会很香哦~
本文首发于cartoon的博客
转载请注明出处:https://cartoonyu.github.io/cartoon-blog/post/json/json工具类的构建前端版本/
JSON工具类的构建(前端版本)的更多相关文章
- JSON工具类的构建(后端版本)
前言 在前后端交互的选择上,之前一直采用的是模板引擎(因为我只负责后端). 而这次的一个算是作业吧,前后端都是我,所以就研究了一下JSON交互在java web的应用(主要是前端). 优缺点 前后端耦 ...
- Spring统一返回Json工具类,带分页信息
前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本. 此Json响应工具类,支持带分页信息,支持泛型,支持Htt ...
- 用jackson封装的JSON工具类
package hjp.smart4j.framework.util; import com.fasterxml.jackson.databind.ObjectMapper; import org.s ...
- Code片段 : .properties属性文件操作工具类 & JSON工具类
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...
- Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加
package com.aherp.framework.util; import java.lang.reflect.Array;import java.lang.reflect.Method;imp ...
- Json工具类 - JsonUtils.java
Json工具类,提供Json与对象之间的转换. 源码如下:(点击下载 - JsonUtils.java . gson-2.2.4.jar ) import java.lang.reflect.Type ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- 强大的Java Json工具类
转自: https://blog.csdn.net/u014676619/article/details/49624165 import java.io.BufferedReader; import ...
- HttpClientUntils工具类的使用测试及注意事项(包括我改进的工具类和Controller端的注意事项【附 Json 工具类】)
HttpClient工具类(我改过): package com.taotao.httpclient; import java.io.IOException; import java.net.URI; ...
随机推荐
- “希希敬敬对”队软件工程第九次作业-beta冲刺第四次随笔
“希希敬敬对”队软件工程第九次作业-beta冲刺第四次随笔 队名: “希希敬敬对” 龙江腾(队长) 201810775001 杨希 201810812008 何敬 ...
- Python字典(一)
数据类型 数据类型划分:可变.不可变 不可变数据类型:元组.bool.int.str [可哈希] 可变数据类型:list,dict,set [可哈希] 字典格式 dic1={ key(键值):val ...
- HTTP请求方式: GET和POST的比较
GET和POST是HTTP的两个常用方法. 什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议 ...
- Java模拟HttpClient进行Get和Post提交
使用Java模拟客户端进行提交,需要用到apache http client jar,这里用的是4.4版本 GET: public void GetURL(){ String strResp=&qu ...
- LeetCode Linked List Easy 21. Merge Two Sorted Lists
Description Merge two sorted linked lists and return it as a new list. The new list should be made b ...
- c++网络库之 poco
java 不好吗?java面向对象很好啊. poco 做的像 java 用起来更面向对象,这是优势.开发速度提升很多.boost 那种是给大牛看的.我觉得 poco 用起来方便,不清楚的地方随时看源码 ...
- servlet 实践
基础 当Servlet引擎收到一个请求,它将请求所有的细节汇编到一个HttpServletRequest对象.细节包括请求头部.URI.查询字符串和任意发送的参数等等.类似地,它初始化一个处理响应头部 ...
- 使用canvas时, 如何用相对单位(rem, rpx)来适配不同机型
使用canvas的api时, 使用的都是绝对数值, 如: 方法传参是坐标位置,不带单位,如ctx.translate(10,10); 那么此时, 我就需要将rem或rpx 转换成 px; 首先, 获取 ...
- mongoose 与 mylab 的使用 (1)
1.引入mongoose 模块 const mongoose = require('mongoose'); 2.连接数据库 //连接数据库 mongoose.connect( db, {useNew ...
- qq for linux tar.gz安装
借用官网的一段话 QQ for Linux 怎么命令行安装和卸载 RPM版本 安装 ①打开控制台,使用管理员身份登录 :②在终端中输入命令“rpm –U package_name.rpm“ , pac ...