java ajax 请求后获取 json 数据 以及 使用 解析 ,解惑
2017-05-05 00:00
741 查看
写这个内容是 因为。。。框架一直在用ajax ,,传输 json 但是一直不太明白为什么要这样配置, 以及 前端ajax 怎么 使用 后台传输过来的数据。
首先 是 spirng mvc 的 配置
其实这样的配置 我之前 一直 不太明白。。。
说明一下配置:
首先 json格式的数据配置, 客户端的请求 头的 数据格式 是怎样的,就 对应返回 json 格式的 数据。
上面的配置是 几乎所以的 客户端的请求 的数据都是返回的 json 格式的数据的。
当然不包括请求xml 了。就算是 请求头是 application/xml 返回的也是 默认json格式的。 请求是 text 即文本字符串的话,返回的也是 json 的数据的。
返回的数据 我之前一直以为 如果 返回的 是 对象的话, 返回的才是 json 数据的,响应头是application/json;
比如
然后 还有一直 数据 叫做 字符串,, json 格式的字符串。。。,即json数据.toString 了
之前我一直以为 返回数据是 string 类型的话, 返回给客户端的就是 string 类型的 json格式的字符串。。。
比如这样。
其实 这样是 错误的,,, 哪怕 返回的是 String 类型的, 但是 String 类型也是 对象啊,, 所以 返回的数据依然是 json 格式的数据的,而不是 字符串。。。
即 响应的头是 application/json;
那么来 一个小例子:
在 前端ajax 请求的时候 获取到的是 json 格式的数据的。
是可以 data.sucess 等等 这样来获取对应的 key 里面的数据的。
同时 如果想获取 data.objData 是 可以的, 获取到的结果是 string 类型的。。。
获取 data.objData.id 肯定是 获取不到类型的。。。
要获取 里面的 id 就要把 objData 转为 json 对象 就可以 点 出来里面的内容了。
当然 如果 json 对象 里面 objData 对应的内容放的不是 string 而是 其他对象。。。Object
那么在 前端 是可以 直接 data.objData.id 获取 内容的。
哎。。。这就是 不看 mvc 源码的 结果了,,, 虽然可以写 代码,可是不关注原理
首先 是 spirng mvc 的 配置
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 请求映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > <!-- 使用自定义的输出内容转换器,而不是默认的 --> <property name="messageConverters"> <!--转换器为了响应输出是 字符串还是xml还是json内容给客户端的, 响应客户是 xml 格式还是 json格式, 要看 客户端请求头的 Accept 是 json 还是 xml 如果 返回类给客户端的话 当然,如果 客户端请求是 application/xml 而xml没有配置好,返回的就是 json 格式的数据 --> <list> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="writeAcceptCharset" value="false" /> <property name="supportedMediaTypes"> <!--返回客户端string 类型的字符串,UTF-8 编码解决中文乱码 --> <bean class="org.springframework.http.MediaType"> <constructor-arg index="0" value="text" /> <constructor-arg index="1" value="plain" /> <constructor-arg index="2" value="UTF-8" /> </bean> </property> </bean> <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" > <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> <value>application/xml;charset=UTF-8</value> </list> </property> </bean> <!-- 为了返回xml格式的数据配置的,目前用不到,参考 要使用这个 ,需要 将 返回的 实体类 加上xml 对应的注解才可以的 @XmlRootElement 这类的 可以不用在意,因为xml 很少用,都是用的 json 了 <bean id="marshallingHttpMessageConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> <property name="marshaller" ref="castorMarshaller" /> <property name="unmarshaller" ref="castorMarshaller" /> <property name="supportedMediaTypes"> <list> <value>text/xml;charset=UTF-8</value> <value>application/xml;charset=UTF-8</value> </list> </property> </bean> --> <bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter" /> <!-- 返回 json给客户端的转换器 MappingJacksonHttpMessageConverter 已经过时了不要使用 --> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> <value>text/json;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean>
其实这样的配置 我之前 一直 不太明白。。。
说明一下配置:
首先 json格式的数据配置, 客户端的请求 头的 数据格式 是怎样的,就 对应返回 json 格式的 数据。
上面的配置是 几乎所以的 客户端的请求 的数据都是返回的 json 格式的数据的。
当然不包括请求xml 了。就算是 请求头是 application/xml 返回的也是 默认json格式的。 请求是 text 即文本字符串的话,返回的也是 json 的数据的。
返回的数据 我之前一直以为 如果 返回的 是 对象的话, 返回的才是 json 数据的,响应头是application/json;
比如
@RequestMapping("save") @ResponseBody public Result save(HttpServletRequest request,
然后 还有一直 数据 叫做 字符串,, json 格式的字符串。。。,即json数据.toString 了
之前我一直以为 返回数据是 string 类型的话, 返回给客户端的就是 string 类型的 json格式的字符串。。。
比如这样。
@RequestMapping("get") @ResponseBody public String get(HttpServletRequest
其实 这样是 错误的,,, 哪怕 返回的是 String 类型的, 但是 String 类型也是 对象啊,, 所以 返回的数据依然是 json 格式的数据的,而不是 字符串。。。
即 响应的头是 application/json;
那么来 一个小例子:
if (pplanCyclePo !=null) { //有数据的 jsonObj.put("success", true); jsonObj.put("objData",JsonHelper.toJsonToDateForm(pplanCyclePo, "yyyy-MM-dd")); // jsonObj.put("pplanCycleId", pplanCyclePo.getId()); }else { jsonObj.put("success", false); } return jsonObj.toString();
在 前端ajax 请求的时候 获取到的是 json 格式的数据的。
是可以 data.sucess 等等 这样来获取对应的 key 里面的数据的。
同时 如果想获取 data.objData 是 可以的, 获取到的结果是 string 类型的。。。
获取 data.objData.id 肯定是 获取不到类型的。。。
要获取 里面的 id 就要把 objData 转为 json 对象 就可以 点 出来里面的内容了。
当然 如果 json 对象 里面 objData 对应的内容放的不是 string 而是 其他对象。。。Object
那么在 前端 是可以 直接 data.objData.id 获取 内容的。
//使用异步加载数据 var url = _ctxPath + "/pfmcePlan/hrEffPfmcePlan/getHrEffPplanCycleTime.do"; $.post(url, { 'id': idForPlanTime, 'monthNum': selectMonth }, function(data) { //绑定 表单数据,显示在form表单中, 会把id 也放到里面的了 // 就算选择了 重置这个按钮也没有关系的, id一样是在里面的 // 总之就不要把id 在放在from 里面了,否则后台要处理去掉 ","号 if (data.success) { $("#planCyclePo").val(data.objData); bindFormData("hrEffPfmcePlanTimeSaveForm", data.objData); var objDataJSON = JSON.parse(data.objData); //必须变为json对象,才可以获取到里面的数据的 console.log('周期时间>>>>>>>>>' + data.objData); //因为值传输是 string类型的,所以要转为json var id = $("#savePlanCycleId").val(); console.log(objDataJSON.id + " , 修改周期时间的formid>>>" + id); if (!id) { //说明 id数据不存在 $("#savePlanCycleId").val(objDataJSON.id); console.log("赋值>>>>" + $("#savePlanCycleId").val()); } $("#ytime").val($("#reportStime").val()); } else { //showError("编码已存在");错误提示这里不合适 showAlert("数据不存在"); //弹窗提示 return; } }, "json").error(function() { showError("网络错误"); });
哎。。。这就是 不看 mvc 源码的 结果了,,, 虽然可以写 代码,可是不关注原理
相关文章推荐
- Java从网络中请求获取JSon数据以及解析JSON数据----(自创,请注明)
- 安卓使用Gson解析服务器返回Json数组,以及java服务器怎样返回list集合的Json数据(原创)
- AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据
- phpStudy4——前端页面使用Ajax请求并解析php返回的json数据
- jquery的ajax请求处理以及处理后台java传的json数据
- 使用swiftyJson和Alamofire做网络请求,以及json数据的解析
- JavaWeb将数据包装成JSON以及JSP通过ajax对JSON的获取与解析(代码实例)
- json数据解析与JAVA对象转换以及在JQUERY中的使用
- 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析
- JavaWeb将数据包装成JSON以及JSP通过ajax对JSON的获取与解析(代码实例)
- JavaWeb将数据包装成JSON以及JSP通过ajax对JSON的获取与解析(代码实例)
- 使用原生JavaScriptAjax以及jQuery的Ajax结合SpringMVC发送和获取json数据
- AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据
- Ajax的基础请求以及获取JSON的两种解析方式
- AJAX 跨域请求 - JSONP获取JSON数据
- struts2 + ajax(从后台获取json格式的数据返回到前端,然后前端用jquery对json数据进行解析)
- JSONObject 解析从网络获取的json数据时,java.lang.String cannot be converted to JSONObject解决办法(编码 UTF-8)
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及非文件上传的部分
- 浅析ajax请求json数据并用js解析
- ajax请求解析springmvc返回的json数据