這是我的JSP文件的jQuery的getJSON方法永遠等待,如果請求需要很長的時間
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Heelo;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
<script>
$(function() {
console.log('something');
$.getJSON('test', function(data) {
console.log(data);
});
});
</script>
</body>
</html>
這是我的servlet文件
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
Thread.sleep(360000);
} catch (InterruptedException e) {
e.printStackTrace();
}
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.write("[]");
}
這是發送到一個servlet的請求。但是如果這個servlet需要很長時間(例如6分鐘)來處理,那麼沒有數據被打印到控制檯。在上面的例子中,我可以看到'something'打印到控制檯,但沒有'[]'。
但是,如果我直接對該servlet執行curl
,則可以返回結果。
任何幫助?
爲什麼你會希望客戶要等待6分鐘,結果? –
@MikeBrant因爲我的servlet對數據庫有一個查詢可能需要很長時間,所以在這裏我只是強迫它等待6分鐘來重現問題。 – Cacheing