2012-05-18 6 views
0

안녕하세요.이 스크립트를 가지고 있는데 왜 나는 항상 req = XMLHTTPRequest가 정의되지 않았는지 알 수 없습니다. 내가 실수를 저에게 내릴 수 있습니까?XMLHttpRequest()가 정의되지 않았습니다. 서블릿

var req; 


function validate() { 
//var idField = document.getElementById("name"); 
var wrt1 = document.getElementById("p1").value; 
var wrt2 = document.getElementById("p2").value; 
var data = eval(wrt1)+eval(wrt2); 
// var data = "name=" + encodeURIComponent(idField.value); 
req = new XMLHttpRequest(); 
// req = new XMLHttpRequest(); 
var url = "Serwlet"; 
req.open("POST", url, true);   
req.onreadystatechange = inserter; 
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
req.send(data); 
} 

function inserter() { 
if (req.readyState == 4) { 
    if (req.status == 200) { 
     var msg = req.responseText 
     if (msg == "") { 
      //document.getElementById("msg1").innerHTML = "<div style=\"color:red\">"+"COS NIE TAK"+"</div>"; 
      document.getElementById("msg1").value = ''; 
     } 
     else 
      //document.getElementById("msg1").innerHTML = "<div style=\"color:red\">"+wynik+"</div>"; 
      document.getElementById("msg1").value = "IT WORKS"; 
    } 
} 

}

편집 좀 개선했습니다

좋아. 이제 유일한 문제는 JavaScript inserter()의 msg가 항상 비어 있다는 것입니다./왜 그런지 모르겠지만, 유효성 검사 메소드를 보면 var 데이터가 올바른 값을 갖습니다. msg는 항상 null입니다. /.

package Pakiet; 


import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.Writer; 

import javax.servlet.ServletException; 
import javax.servlet.ServletResponse; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.Writer; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet("/Serwlet") 
public class Serwlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 
static String KOD = 
/* 

    out.print("<FORM ACTION=\"ExerciseE\" name=\"entryForm\">\n"+ 
         "Name:<INPUT TYPE=\"TEXT\" NAME=\"name\"><BR>\n"+ 
         "<INPUT TYPE=\"BUTTON\" VALUE=\"SUBMIT\"\n" + 
         " OnClick=\"validate()\">\n</FORM>");  
*/ 
"<html>"+ 
"<head>"+ 
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1250\">"+ 
"<title>Testowanie</title>"+ 
"<script type=\"text/javascript\" language=\"javascript\" src=\"servletD2Script.js\"></script>"+ 
"</head>"+ 
"<body>"+ 
"<div id=\"msg1\">Pierwsza suma</div>"+ 
"<div id=\"msg2\">Pierwsza suma</div>"+ 
"<center><h2>Testowanie parametrów</h2></center>"+ 
"<hr>"+ 
"<form method=\"get\" action=\"Serwlet\">"+ 
"p1<input type=\"text\" size=\"50\" name=\"p1\" onblur=\"validate()\"><br>"+ 
"p2<input type=\"text\" size=\"50\" name=\"p2\" onblur=\"validate()\"><br>"+ 
"<br><input type=\"submit\" value=\"Wyślij formularz by GET\">"+ 
"</form>"+ 
"</hr>"+ 
"<hr>"+ 
"<form method=\"post\" action=\"Serwlet\">"+ 
"p3<input type=\"text\" size=\"50\" name=\"p3\" onblur=\"funkcja()\"><br>"+ 
"p4<input type=\"text\" size=\"50\" name=\"p4\" onblur=\"funkcja()\"><br>"+ 
"<br><input type=\"submit\" value=\"Wyślij formularz by POST\">"+ 
"</form>"+ 
"</hr>"+ 

"</body></html>"; 

public Serwlet() { 
    super(); 

} 
static boolean raz = true; 
private void serviceRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     response.setContentType("text/html"); 
     response.setHeader("Cache-Control", "no-cache"); 
     PrintWriter out = response.getWriter(); 
     if(raz){out.print(Serwlet.KOD);raz = false;} 
     String name = request.getParameter("name"); // dostaję nazwisko 
     String org = ""; //jakas wartosc 
     out.write(org != null ? org : ""); // zwracam organizację lub pusty napis, jesli nie znam nazwiska 
} 


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    serviceRequest(request, response); 
} 


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    serviceRequest(request, response); 
} 

} 

하고 스크립트 // 메소드 FUNCKJA()가 중요하지 않다 AT ALL 대신 req = new XMLHttpRequest

function funkcja(){ 
var wrt1 = document.getElementById("p1").value; 
var wrt2 = document.getElementById("p2").value; 
var wynik = eval(wrt1)+eval(wrt2); 
document.getElementById("msg1").innerHTML = "<div style=\"color:red\">"+wynik+"</div>"; 
var wrt3 = document.getElementById("p3").value; 
var wrt4 = document.getElementById("p4").value; 
var wynik2 = eval(wrt3)+eval(wrt4); 
document.getElementById("msg2").innerHTML = "<div style=\"color:red\">"+wynik2+"</div>"; 
} 


var req; 

function validate() { 
//var idField = document.getElementById("name"); 
var wrt1 = document.getElementById("p1").value; 
var wrt2 = document.getElementById("p2").value; 
var data = eval(wrt1)+eval(wrt2)+""; 

if (typeof XMLHttpRequest != "undefined") { 
    req = new XMLHttpRequest(); 
} else if (window.ActiveXObject) { 
    req = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
var url = "Serwlet"; 
req.open("POST", url, true);  
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
alert("data = "+data); 
req.send(data); 
req.onreadystatechange = inserter; 
} 




function inserter() { 
if (req.readyState == 4) { 
    if (req.status == 200) { 
     var msg = req.responseText; 
     alert("msg = "+msg); 
     if (msg == "") { 
      document.getElementById("msg1").innerHTML = "<div style=\"color:red\">"+"COS NIE TAK"+"</div>"; 
      //document.getElementById("msg1").value = "blabla"; 
     } 
     else 
      document.getElementById("msg1").innerHTML = "<div style=\"color:red\">"+msg+"</div>"; 
      //document.getElementById("msg1").value = "COOOO JEST"; 
    } 
} 
} 
+0

jQuery를 사용하지 않는 이유가 무엇인가에 쓰기 후? – mkoryak

+0

나는 AJAX를 연습한다. – Yoda

+0

아약스 연습에는 어떤 것이 포함됩니까? 요가 같은 거니? – mkoryak

답변

1

이 시도 :

if(window.XMLHttpRequest && !(window.ActiveXObject)) { 
     try { 
      req = new XMLHttpRequest(); 
     } catch(e) { 
      req = false; 
     } 

    } else if(window.ActiveXObject) { 

     try { 
      req = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch(e) { 
      try { 
       req = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch(e) { 
       req = false; 
      } 
     } 
    } 

을 주제 끄기 : 아약스 인 경우 당신은 예를 들어 어떤 라이브러리를 사용하는 것을 고려해야합니다. jQuery. 말이 맞아 사실인지 아닌지

if(raz){out.print(Serwlet.KOD);raz = false;} 

당신이 확인할 수 있습니다

편집 : 코멘트 당으로

?

그런 스트림 호출 out.flush();

if(raz){ 
    out.print(Serwlet.KOD); 
    raz = false; 
} 
String name = request.getParameter("name"); // dostaję nazwisko 
String org = ""; //jakas wartosc 
out.write(org != null ? org : ""); 
out.flush(); 
+0

그런 식으로 시도했지만 시스템 오류 일 뿐이며 내 잘못이 아니라는 것을 알았지 만 지금은 사이트 상단에 설명 된 문제가 있습니다. – Yoda

+0

@RobertKilar이 (가) 내 게시물을 편집했습니다. – mprabhat

관련 문제