2011-03-18 4 views
6

JSON 데이터를 URL에 게시하고 JSON 데이터 인 응답을 처리해야합니다. 제 3 자 라이브러리가없는 바닐라 자바 ​​스크립트를 사용하여 어떻게해야합니까? 또한 요청 헤더를 설정해야합니다. 제발 누군가가 내게 이걸하는 방법에 대한 예제를 줄 수 있습니까? 여기JSON 데이터를 게시하고 응답을 처리하는 AJAX 요청을 만드는 방법

+0

json_encoded로 데이터를 서버에 보내지 않으면 json 데이터를 얻을 수 없다고 생각합니다. –

+0

내 대답을 참조하고, 원하는 것을해야합니다. –

답변

13

확인하는 방법을 모두 GET과 바닐라의 POST 요청은 자바 스크립트, 요청 헤더 설정하는 방법을 포함하여, jQuery를 같은 더 타사 라이브러리를 즉 없습니다 :

// Just to namespace our functions and avoid collisions 
var _SU3 = _SU3 ? _SU3 : new Object(); 

// Does a get request 
// url: the url to GET 
// callback: the function to call on server response. The callback function takes a 
// single arg, the response text. 
_SU3.ajax = function(url, callback){ 
    var ajaxRequest = _SU3.getAjaxRequest(callback); 
    ajaxRequest.open("GET", url, true); 
    ajaxRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 
    ajaxRequest.send(null); 
}; 

// Does a post request 
// callback: the function to call on server response. The callback function takes a 
// single arg, the response text. 
// url: the url to post to 
// data: the json obj to post 
_SU3.postAjax = function(url, callback, data) { 
    var ajaxRequest = _SU3.getAjaxRequest(callback); 
    ajaxRequest.open("POST", url, true); 
    ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    ajaxRequest.setRequestHeader("Connection", "close"); 
    ajaxRequest.send("data=" + encodeURIComponent(data));  
}; 

// Returns an AJAX request obj 
_SU3.getAjaxRequest = function(callback) { 

    var ajaxRequest; 

    try { 
     ajaxRequest = new XMLHttpRequest(); 
    } catch (e) { 
     try { 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try { 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e){ 
       return null; 
      } 
     } 
    } 

    ajaxRequest.onreadystatechange = function() { 
     if (ajaxRequest.readyState == 4) {  
      // Prob want to do some error or response checking, but for 
      // this example just pass the responseText to our callback function 
      callback(ajaxRequest.responseText); 
     } 
    }; 


    return ajaxRequest; 

}; 

이처럼 사용

function processResponse(responseText) { 
    // Response text is a json: 
    var obj = JSON.parse(responseText)  // won't work all browsers, there are alternatives 
    // Do something with obj 
    .... 
} 

var jsonToPost = ....  // whatever your json is 
var url = ... // the URL to post to 

_SU3.postAjax(url, processResponse, jsonToPost); 
관련 문제