2)通过$.post()方法返回数组
在实际的开发中往往会遇到需要返回复杂数据类型的情况,这时,如果继续依靠上面的方法,则很显然已经不能满足我们的需求了,所以接下来将进行数组的传递。依旧采用上面的例子来作实例,通过数组返回会传递过去的姓名和密码,并显示登录的提示信息。
1)依旧是建立一个用于显示登录的login.html页面,具体实现代码如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录界面</title> <script language="JavaScript" src="../jQuery/jquery1.8.2.js"></script> <script> $(function(){ $("#submit").click(function(){ $.post( "../LoginServlet", { name:$("#name").val(), password:$("#password").val() }, function(data){ alert("解析前的数据为"+data); var value = JSON.parse(data); alert("解析后的数据为"+value); var name = value[1]; var password = value[2]; if(value[0]=="success"){ alert("登录成功"+"\n"+"姓名="+name+"\n"+"密码="+password); } if(data[0]=="failure"){ alert("登录失败"); } }, "html" ); }) }) </script> <style> body{width:300px; height:200px; margin:0 auto;} fieldset{ width:300px; } table{ width:300px; height:100px;} </style> </head> <body> <fieldset> <legend>登录界面</legend> <form method="post"> <table> <tr><td>姓名:</td><td><input type="text" name="name" id="name"/></td></tr> <tr><td>密码:</td><td><input type="password" name="password" id="password"/></td></tr> </table> <input type="button" value="提交" style="margin-left:66px; width:70px;" id="submit"> <input type="reset" value="重置" style="width:70px;"/> </form> </fieldset> </body> </html> |
2)建立一个用于接收参数的Servlet类型的LoginServlet.java,在这里需要导入几个包,具体实现代码如下:
package zjh.javaee.servlet;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson; import com.google.gson.JsonArray;
@WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L;
public LoginServlet() { super(); }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //解决乱码问题 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); //接收请求的参数 String userName = request.getParameter("name"); String userPassword = request.getParameter("password"); PrintWriter pw = response.getWriter(); String str = ""; //判断是否为空,如果不为空,则将姓名传递到show.html页面中 if(userName.equals("")||userName==null||userPassword.equals("")||userPassword==null){ str = "failure"; }else{ str = "success"; } Gson gson = new Gson(); JsonArray array = new JsonArray(); array.add(gson.toJsonTree(str)); array.add(gson.toJsonTree(userName)); array.add(gson.toJsonTree(userPassword)); pw.print(array.toString()); }
}
|
3)运行结果如下所示:
解析前的数据为:
|
解析后的数据为:
|
最终结果为:
|