ajax實現頁面不刷新前后台交互(完整前端代碼)


注意:牽涉到的文件下載后,需要自行修改自己所放的位置。后台代碼(后台生成json數據使用JSONArray和JSONObject,先將要轉化的對象循環轉化為JSONObject對象,同時循環再加入JSONArray)

后台簡要提及需要處理:

response.setContentType("application/json; charset=utf-8");
response.setHeader("cache-control", "no-cache");

PrintWriter out = response.getWriter();

out.print(array.toString());
out.flush();
out.close();

也就是要將json數據返回給客戶端.

(連接數據庫和用戶表映射類省略)

完整后台servlet代碼:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import table.User;

/**
* Servlet implementation class Login
*/
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public Login() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//實現登錄
String uname = request.getParameter("uname");
String pwd = request.getParameter("pwd");
response.setContentType("application/json; charset=utf-8");
response.setHeader("cache-control", "no-cache");
PrintWriter out = response.getWriter();


loginDao.Login login = new loginDao.Login();
JSONArray array = new JSONArray();

//如果查詢的結果不為空,返回json數據給前端
try {
List<User> uList = login.login(uname, pwd);
if (uList!=null) {
for (int i = 0; i < uList.size(); i++) {
User user = uList.get(i);
JSONObject jsonObject = JSONObject.fromObject(user);
array.add(jsonObject);
System.out.println(array.toString());

}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(array.toString());
out.print(array.toString());
out.flush();
out.close();
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

 

前台代碼:

1、login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<!-- 引入js -->
<script src="./js/jquery-3.3.1.js"></script>
<script src="./js/getajax.js"></script>
<!-- 實現局部刷新 -->
<script src="./js\jquery-form.js"></script>
<script type="text/javascript">
var url_1 = "<%=basePath%>";
function getURL(){
return url_1;
}
$(document).ready(function() {
var options = {
//需要刷新的區域id
target:'.left',
};
//綁定FORM提交事件
$('#formId').submit(function() {
$(this).ajaxSubmit(options);
return false;
});

});
</script>
</head>
<body>

<div id="login">
<form action="<%=basePath%>Login" method="post" onsubmit="return toGo();" id="formId">
賬號:<input type="text" name="uname" id="uname"/>
密碼:<input type="password" name="pwd" id="pwd"/>
<input type="submit" value="提交">
</form>

</div>

<div class="left"></div>
<div class="left"></div>

 

</body>
</html>

 

2、getajax.js

function toGo(){


//異步加載json數據
$(function () {
var url_1 = getURL();

$.ajax({
url: url_1+'/Login?uname=cisco&pwd=1234',
type: 'post',
dataType: 'json',
timeout: 1000,
cache: false,
//async:false,
beforeSend: LoadFunction, //加載執行方法
error: erryFunction, //錯誤執行方法
success: succFunction //成功執行方法
});
function LoadFunction() {
$(".left").html('加載中...');
}
function erryFunction() {
alert("error");
}
function succFunction(tt) {
$(".left").html('');

//eval將字符串轉成對象數組
//var json = { "id": "10086", "uname": "zhangsan", "email": "zhangsan@qq.com" };
//json = eval(json);
//alert("===json:id=" + json.id + ",uname=" + json.uname + ",email=" + json.email);

var json = eval(tt); //數組
var i = 0; //用於統計記錄的條數,實現分頁,點擊下一頁,則向前,初始狀態為第一頁
$(".left").html("" + json[0].uname + " " + json[0].pwd + " " + json[0].email + "");
$.each(json, function (index, item) {
//循環獲取數據
i=i+1;
$(".left").html("" + json[index].uname + " " + json[index].pwd + " " + json[index].email + "");
});
}
});

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM