2011-11-14 4 views
3

컨트롤러에 AJAX 요청을 보냅니다. 이 개발은 JSP와 Spring 환경에서 이루어졌다. SimpleFormController컨트롤러에서 사용하고 있습니다. JavaScript 사용하기 개체를 만들고 요청을 보냅니다. 이 요청은 컨트롤러에 전달되지 않습니다. 이 문제와 관련하여 궁금한 점이 있으면 저에게 도움을주십시오.컨트롤러에 Ajax 요청이 전달되지 않았습니다.

요청을 보내는 JavaScript 코드입니다.

function getStates(){ 
    var httpRequest; 
    var country = document.getElementById('countryName'); 
    alert(country); 
    var url = '/developer/register.htm'; 

    url = url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true'); 

    if (window.ActiveXObject) 
    { 
     httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    else if (window.XMLHttpRequest) 
    { 
     httpRequest = new XMLHttpRequest(); 
    } 

    httpRequest.open("GET", url, true); 
    httpRequest.onreadystatechange = function() {processRequest(); }; 
    httpRequest.send(null); 
} 

function processRequest() { 
    if(httpRequest.readyState == 4){ 
     alert("inside ready state"); 
     var response = http.responseText; 
     document.getElementById('states').innerHTML = response; 
    } 
} 

변수 url은 내가 디스패처 서블릿에서 언급 한 방법과 방식으로 제공됩니다.

브라우저 processRequest라는() 함수에 HttpRequest가 텔링 정의되지에서 에러를 나타낸다. 그러나 나는 이것을 얻지 않는다 오류이전 줄 나는이 객체를 getStates() 함수에서 사용한다. 누구든지이 점에 대해 알고 있다면 이것을 정리하도록 도와주세요. 미리 감사 드리며 지원에 감사드립니다.

답변

4

변수 httpRequestgetStates() 함수 외부에서 정의해야하기 때문입니다. 그렇지 않으면 processRequest()을 볼 수 없습니다.

+0

오류는 반복하지 않는다. 도와 주셔서 감사합니다. 그러나 요청이 컨트롤러로 리디렉션되지 않습니다. 누구든지이 점에 대해 조언이 있다면 조언을 구하십시오. – Nazneen

+0

[jQuery] (http://jquery.com/) 또는 다른 js 라이브러리를 사용하여 이러한 아약스 문제점을 제거하는 것이 좋습니다. Ajax는 매우 복잡 할 수 있으며 이러한 라이브러리는이를 처리하는 편리한 방법을 제공합니다. – JSPDeveloper01

+0

도서관의 이름을 알려주 시거나 알고 계시면 참조 링크를 달아주세요. 정말 감탄할 것입니다. 귀하의 제안에 감사드립니다. – Nazneen

1

어느 선언 httpRequest 외부 getStates() (전역 변수) 또는 processRequest()로 전달한다 : I 변수의 범위를 변경할 경우

httpRequest.onreadystatechange = function() { processRequest(httpRequest); }; 

function processRequest(httpRequest) { 
+0

변수의 범위를 변경하면 오류가 반복되지 않습니다. 도와 주셔서 감사합니다. 그러나 요청이 컨트롤러로 리디렉션되지 않습니다. 누구든지이 점에 대해 조언이 있다면 조언을 구하십시오. – Nazneen

관련 문제