AJAX - $.get( url, [data], [success], [type] )-3

前端之家收集整理的这篇文章主要介绍了AJAX - $.get( url, [data], [success], [type] )-3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上一篇http://www.jb51.cc/article/p-olpzclwq-bpe.html

提到请求格式为$.get(url,queryString,function(data){}解决的两种思路;
以及请求格式为$.get(url,{mydata:queryString},function(data){}的两种思路。

本篇讲一下下面格式的后台接收第三种思路:

  1. queryString = $('#editform').serializeArray();
  2. queryString = JSON.stringify(queryString);//string
  3. //querystring为json 字符串数组
  4. $.get(url,function(data){}

后台接收方法

思路 :使用request.getParameter("key");

  1. package com.atgui.ajax.app.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.net.URLDecoder;
  6. import java.util.HashMap;
  7.  
  8. import javax.servlet.ServletException;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. import org.codehaus.jackson.map.ObjectMapper;
  14.  
  15. public class GetServlet3 extends HttpServlet {
  16.  
  17. /** * queryString = $('#editform').serializeArray(); queryString = JSON.stringify(queryString);//string $.get(url,function(data){}); */
  18. public void destroy() {
  19. super.destroy(); // Just puts "destroy" string in log
  20. // Put your code here
  21. }
  22.  
  23. public void doGet(HttpServletRequest request,HttpServletResponse response)
  24. throws ServletException,IOException {
  25.  
  26. doPost(request,response);
  27. }
  28.  
  29. public void doPost(HttpServletRequest request,IOException {
  30.  
  31. response.setContentType("text/html");
  32. PrintWriter out = response.getWriter();
  33.  
  34.  
  35. String jsonString =request.getParameter("mydata") ;
  36. System.out.println(jsonString);
  37.  
  38.  
  39. ObjectMapper objectMapper = new ObjectMapper();
  40. String resultJson = objectMapper.writeValueAsString(jsonString);
  41. System.out.println("resultJson ..."+resultJson);
  42.  
  43. out.print(resultJson);
  44. out.flush();
  45. out.close();
  46. }
  47.  
  48. public void init() throws ServletException {
  49. // Put your code here
  50. System.out.println("getServlet init()....");
  51. }
  52.  
  53. }

result as follows :

  1. //启动servlet
  2. getServlet init()....
  3.  
  4. //解析得到的mydata
  5. [{"name":"username","value":"yanshi02"},{"name":"password","value":"123456"}]
  6.  
  7. //返回的json
  8. resultJson ..."[{\"name\":\"username\",\"value\":\"yanshi02\"},{\"name\":\"password\",\"value\":\"123456\"}]"

如果直接返回jsonString ,此时typeof data = object ; 那么不需要进行解析可以直接使用data.key获取json 属性

  • 拿到返回的data
  • 进行JSON遍历!

如果返回resultJson,则需要进行解析 ,才可以遍历json属性

解析过程参考 前面讲的post



【F12查看浏览器】

可以看到浏览器对URL里面的数组进行了编码,但是我后台并没有显示使用URL解码:

  1. String jsonString2 = URLDecoder.decode(jsonString.toString(),"UTF-8");
  2. System.out.println(jsonString2);

结果仍然正确!

关于解码编码问题,可以参考我写的系列文章HTTP请求中的编码解码


Tips:

参考post参考post传输参数数据格式为{key : value}可知:

无论 get 或者 post ,如果data为{key : value}形式。

则都可以使用request.getParameter("key");的形式进行获取

猜你在找的Ajax相关文章