'post방식'에 해당되는 글 1건

  1. 2008.09.25 Ajax post방식
posted by 준치 2008. 9. 25. 10:11

get방식은 써봤는데 post 방식이 안되서 과장님이 찾아주신 post 방식
보니까 소스상에서 다른점은 setRequestHeader()이게 다르더군...소스는 자바지만 함 써봅시다...ㅎㅎㅎ

// 포스트 방식
function callPostAjax() {
 var userId = document.getElementById("userId");
 var  v = userId.value;  // userID 값을 가지고 왔다.
 var url = "helloAjax.do";
 // 여러개의 파라미터 값을 넘기려면 and ~ and ~ 이런식으로 뒤에 붙여 보낸다.
 var param = "id=" + v;
 // Ajax 는 전송시 form 방식 으로 하지 않고 request에 담아서 보낸다.
 request.open("POST", url, true);
 request.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');
 request.setRequestHeader("Cache-Control","no-cache, must-revalidate");
 request.setRequestHeader("Pragma","no-cache");
 request.onreadystatechange = callback;
 request.send(param);                       

먼저 <input type="text" name="id" id="userId" onkeyup="callPostAjax();" />
바디부에서 onkeyup="callPostAjax();" 호출
GET 방식과 비교를 하여보면 get 방식에서는 url 에서 모든걸 가져갔지만
여기 POST 방식에서는 param 변수를 둬서 파라미터 값으로 가지고 가는 점이틀리다. 

그리고 EncodingFilter 에서 한글을 설정한다.
그 다음 HelloAjaxAction에서 설정

package hello;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class HelloAjaxAction extends Action {
 @Override
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  String id = request.getParameter("id");  
  System.out.println(id);// 콘솔창 한글 찍히나 확인용  
  String msg = "Not Okay";
  if (id.equals("test")) {
   msg = "Okay";
  }

  return new ActionForward("/hello.jsp", false);

/* config.xml 에서 설정할 것을 여기서 할 수 있는데 다음은
    Ajax 가 이런 설정을 통하여 jsp 페이지를 통째로 가져다
    쓸 수 있다는 사실을 보여준다.
*/
 }
}