2012-04-27 4 views
-3

조치/홈/시작 보내기 요청이 필요합니다.ajax 요청을 수동으로 만드는 방법은 무엇입니까?

응답이 요소 ID 'js_script'에 설정되었습니다.

어떻게 할 수 없습니까?

+2

왜 수동으로 하시겠습니까? ASP 또는 자바 스크립트에서? 또한 jQuery와 같은 라이브러리를 사용할 수 있습니까? – GillesC

+0

JavaScript에서 문제가 발생했을 때 온라인으로 보는 방법을 "찾지"못합니다. 안타깝게도, JS 프로그래머의 대다수는 이것을하기에는 너무 게을러서 jQuery를 대신 사용한다. –

+0

@Kolink : jQuery는 브라우저 간 호환성이 뛰어납니다. 문제를 찾아 내면 Firefox가 아닌 Chrome에서만 작동합니까? 바닐라의 AJAX Plus JavaScript는 못생긴 :-P –

답변

0

당신이 원하는 모든 기본적인 요청이 다음 함수 어떤 라이브러리없이 쉽게 할 수있는 경우 난 당신이 무슨 뜻인지 추측하는 데 http://www.quirksmode.org/js/xmlhttp.html

function sendRequest(url,callback,postData) { 
    var req = createXMLHTTPObject(); 
    if (!req) return; 
    var method = (postData) ? "POST" : "GET"; 
    req.open(method,url,true); 
    req.setRequestHeader('User-Agent','XMLHTTP/1.0'); 
    if (postData) 
     req.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
    req.onreadystatechange = function() { 
     if (req.readyState != 4) return; 
     if (req.status != 200 && req.status != 304) { 
//   alert('HTTP error ' + req.status); 
      return; 
     } 
     callback(req); 
    } 
    if (req.readyState == 4) return; 
    req.send(postData); 
} 

var XMLHttpFactories = [ 
    function() {return new XMLHttpRequest()}, 
    function() {return new ActiveXObject("Msxml2.XMLHTTP")}, 
    function() {return new ActiveXObject("Msxml3.XMLHTTP")}, 
    function() {return new ActiveXObject("Microsoft.XMLHTTP")} 
]; 

function createXMLHTTPObject() { 
    var xmlhttp = false; 
    for (var i=0;i<XMLHttpFactories.length;i++) { 
     try { 
      xmlhttp = XMLHttpFactories[i](); 
     } 
     catch (e) { 
      continue; 
     } 
     break; 
    } 
    return xmlhttp; 
} 
0

여기에서 찾을 수 있지만, 기본적으로, 당신은 사용 XMLHttpRequest object은 아약스 요청을 수행합니다. 다른 브라우저가 채택하고 현재 표준화 작업을 진행중인 Microsoft의 혁신입니다. 최신 브라우저에서는 다음과 같이 보입니다.

function sendRequest() { 
    var request = new XMLHttpRequest(); 
    request.open('GET', '/Home/Start', false); 
    request.onreadystatechange = handleStateChange; 
    request.send(null); 

    function handleStateChange() { 
     if (request.readyState === 4) { 
      // The request is complete; did it work? 
      if (this.status >= 200 && this.status < 300) { 
       // Yes, you can use the data on request.responseText 
       // or (for requests with XML replies) request.responseXML 

       // In our case, let's say we want to put all of the text 
       // into the element with the `id` "js_script": 
       var elm = document.getElementById("js_script"); 
       elm.innerHTML = request.responseText; 
      } 
     } 
    } 
} 

분명히 상당히 단순합니다. 오래된 브라우저에서, 당신은 객체 생성 주위에 검사의 몇 가지를해야 할 (예를 들어, IE7에서 작동하지 않습니다 new XMLHttpRequest을하지만, IE7에 그것을 할 수있는 방법이 있습니다.) 생성 주위


합병증을 구식 브라우저의 객체는 여러 가지 중 하나입니다. jQuery, Prototype, YUI, Closure 또는 any of several others과 같은 적절한 자바 스크립트 라이브러리를 사용하는 것이 좋습니다. 브라우저 차이를 부드럽게 처리하고 많은 유틸리티 기능을 추가하며 HTTP 상태 코드 (예 : HTTP 상태 코드)를 걱정하지 않고 특정 작업을 완료하는 데 집중할 수 있습니다. 도서관 없이는 일할 수있는 시간과 장소가 없다는 것을 의미하지 않습니다.   — 물론 평상시에는 완전히 독자적으로가는 것보다 다른 사람의 작업에 더 생산적으로 작용할 수있는 것은   —입니다.

관련 문제