2017-04-18 7 views
0

아약스가 처음이므로 문제를 해결하기 위해 다양한 질문을 수행했지만 아무 것도 작동하지 않는 것 같습니다.Javascript varibale이 서블릿에 전송되지 않음

난 그냥 버튼을 클릭하면 내 서블릿 아약스 호출을 만들고 싶어이 내 코드입니다 :

sample.html

<!DOCTYPE html> 
<html> 
<body> 
<button type="button" onclick="loadDoc()">Change Content</button> 
</body> 
<script> 
function loadDoc() 
{ 
    var xhttp = new XMLHttpRequest(); 
    var data = "number=two"; 
    xhttp.open("POST","Dummy", true); 
    xhttp.send(data); 
} 
</script> 
</html> 

그리고 그것은이다를 검색 할 수 Dummy.java에서 doPost() 방법 :

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
    String param = request.getParameter("number"); 
    System.out.println(param); 
} 

내 콘솔에 null이 표시됩니다. 그 이유는 무엇일까요?

+0

"내 콘솔에 null이 나타납니다." - 무슨 콘솔? Java 코드의 서버 측 로그를 의미합니까? – Quentin

+0

예, Java 콘솔. param의 값은 null입니다. –

+0

일반 HTML 양식을 제출하는 경우 작동합니까? – Quentin

답변

0

나는 자바 스크립트, 요청 헤더가 포함되어 있음을 실행하면 :

콘텐츠 유형 : 텍스트/일반; 문자 집합을 = UTF-8 아마도

는 (I는 적절한 검사를하지 않습니다 환경을 사용할 수 있음) Java가주의를 기울여 파싱하지 않습니다.

콘텐츠를 명시 적으로 입력 설명 : 대신 수동으로 데이터를 구성하는

var xhttp = new XMLHttpRequest(); 
xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

을 또는 FormData 객체를 사용 (다중/폼 데이터를 생성하고, XHR은 자동에서 콘텐츠 형식을 설정할 수) :

var xhttp = new XMLHttpRequest(); 
var data = new FormData(); 
data.append("number", "two"); 
xhttp.open("POST","Dummy", true); 
xhttp.send(data); 
+0

FormData 객체 접근 방식이 나에게 적합하지 않았습니다. 서블릿 측에서 null 값을주었습니다. 첫 번째 방법은'setRequestHeader' 메소드가'open' 메소드 다음에 쓰여지는 한 제게는 효과가있었습니다. 'var에 xhttp = 새로운 XMLHttpRequest의();' 'xhttp.open ("POST", "READ2", TRUE);' 'xhttp.setRequestHeader ("콘텐츠 유형", "응용 프로그램/x를 - www가 -form-urlencoded ");' –