최근 프로젝트 진행 중에 JavaScript를 사용하여 양식을 제출하는 데 문제가 발생했습니다. 이전에 여러 번 해봤지만, 이번에는 JavaScript를 사용하여 양식을 제출하는 여러 가지 방법을 요약하고 비교했습니다. 이 프로젝트에 가장 적합한 방식을 선택했습니다.
저는 현재 Sun Communication Suite용 사용자를 생성하기 위한 소규모 시스템을 작업하고 있습니다. 가장 쉬운 방법은 다음과 같은 연결을 사용하는 것입니다. b8c4b8c85c84e51b92d450fd70e8c263첫 번째 페이지5db79b134e9f6b82c0b36e0489ee08ed 필요한 모든 데이터를 하이퍼링크에 쓰세요. 관찰해 보면 위의 링크에서 currentPage만 변경되고 다른 매개변수인 event, 키워드, searbyBy 및 cn은 변경되지 않은 것을 알 수 있습니다. 따라서 이러한 변경되지 않은 매개변수를 양식에 캡슐화할 수 있는지 생각했습니다. 사용자가 위의 하이퍼링크를 클릭하고 JavaScript를 사용하여 양식을 제출하면 자연스럽게 서버에 액세스하게 됩니다.
양식:
<form name="pagination" id="pagination" action="UserServlet" method="get">
<input type="hidden" name="currentPage" value="1"/>
<Input type="hidden" name="cn" value="<%=request.getAttribute("cn")%>"/>
<input type="hidden" name="keyword" value="<%=request.getAttribute("keyword")%>"/>
<input type="hidden" name="searchBy" value="<%=request.getAttribute("searchBy")%>"/>
<input type="hidden" name="event" value="SEARCH_USER_FOR_MAILING_LIST">
</form>
양식을 제출하는 과정에서 currentPage 매개변수만 JavaScript에 전달하면 되므로 위 링크를 다음 양식으로 변경했습니다.
<a href=# onclick=document.pagination.currentPage.value="+pages[j]+";document.pagination.submit();><span style='color: red;'>["+pages[j]+"]</span></a>
모두 document.pagination.currentPage.value="+pages[j]+";를 document.pagination.submit(); 앞에 작성하여 사용자가 양식을 제출하기 전에 currentPage 매개변수를 작성하도록 주의해야 합니다. 필요한 값으로 수정되었습니다. 이런 식으로 연결을 사용하여 양식을 제출했지만 문제가 발생했습니다. 여러 페이지에서 위 코드를 시도해야 합니다. JavaScript를 균일하게 작성할 수 있다면 더 쉬울 것입니다. 앞으로 전체 시스템을 유지 관리하기 위해 JavaScript 함수를 작성했습니다.
function submitForm(id,currentPage){
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
//currentPage=100;
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
document.pagination.currentPage.value=currentPage;
var form = document.getElementById(id);
form.submit();
}
그런 다음 하이퍼링크의 onclick 이벤트에 이 함수를 사용합니다.
d0b23832c1e6dabe027aede8bc3327ab["+pages[j]+"]5db79b134e9f6b82c0b36e0489ee08ed, 전체 단락을 볼 수 있습니다. 코드가 훨씬 간단합니다.
그래서 정리해봤습니다. Javascript를 사용하여 양식을 작성하는 방법은 아마도 두 가지가 있을 것입니다. (현재 제가 이해한 바에 따르면)
1. document.formName.submit();
2. var 형식 = document.getElementById(id);
form.submit();
다음번에는 JNDI를 사용하여 페이징을 구현하는 방법을 여러분과 공유하고 싶습니다. 참고하실 수 있도록 이번에 코드를 첨부했습니다.
commons.js
function submitForm(id,currentPage){
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
//currentPage=100;
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
document.pagination.currentPage.value=currentPage;
var form = document.getElementById(id);
form.submit();
}
mailingListMemberAdd.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="my.gov.rmp.webmail.domain.User" %>
<%@ page import="my.gov.rmp.webmail.util.Pager" %>
Add Member to Mailing List:<%=request.getAttribute("cn")%>
Add new members to mailing list: <%=request.getAttribute("cn")%>
Pages:
<form name="pagination" id="pagination" action="UserServlet" method="get">
<input type="hidden" name="currentPage" value="1"/>
<Input type="hidden" name="cn" value="<%=request.getAttribute("cn")%>"/>
<input type="hidden" name="keyword" value="<%=request.getAttribute("keyword")%>"/>
<input type="hidden" name="searchBy" value="<%=request.getAttribute("searchBy")%>"/>
<input type="hidden" name="event" value="SEARCH_USER_FOR_MAILING_LIST">
</form>
<%
int[] pages = pager.getPages();
String keyword = request.getAttribute("keyword").toString();
String searchBy = request.getAttribute("searchBy").toString();
if(pager.isHasFirst()){
out.println("First Page ");
}
if(pager.isHasPrevious()){
out.println("Prev Page ");
}
for(int j=0;j["+pages[j]+"]");
}else {
out.println("["+pages[j]+"]");
}
}
if(pager.isHasNext()){
out.println("Next Page ");
}
if(pager.isHasLast()){
out.println("Last Page ");
}
%>
<%
} else {
//make the mailing list member availabe when user are trying to re-run the search
//request.setAttribute("members", members);
%>
No results are matched your keyword or the user that you are looking for is already a member of this mailing list, please specify another keywork and ">Search Again
<%
}
%>