2012-04-27 11 views
-3

アクション要求/ホーム/開始を送信する必要がありますajaxリクエストを手動で作成するにはどうすればよいですか?

応答が要素id 'js_script'に設定されています。

私はそれを行う方法が見つかりません。あなたが望むすべてが基本的な要求である場合

+2

なぜ手動で行うのですか? aspからまたはjavascriptから?また、jQueryのようなライブラリを使用できますか? – GillesC

+0

私はJavaScriptの問題に直面しているとき、私はオンラインで見ることによってそれを行う方法を「見つける」ことはできません。残念ながら、JSプログラマーの大多数はこれをやるのが面倒で、代わりにjQueryを使用しています。 –

+0

@ Kolink:jQueryの優れた点は、ブラウザ間の互換性です。問題を見つけたら、それはFirefoxではなくChromeでのみ動作しますか?バニラのプラスAJAX 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にはajaxリクエストを行います。これは、他のブラウザが採用しており、現在標準化されつつある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; 
      } 
     } 
    } 
} 

これは明らかに非常に単純化されています。古いブラウザでは、あなたがオブジェクトの作成を中心にチェックのカップルをしなければならない(new XMLHttpRequestは、例えば、IE7上では動作しませんが、IE7でそれを行うための方法があります。)


作成の周りの合併症古いブラウザのオブジェクトは、多くの理由の1つで、jQuery,Prototype,YUI,Closure、またはany of several othersのような適切なJavaScriptライブラリの使用をお勧めします。ブラウザの違いをスムーズにしたり、多くのユーティリティ機能を追加したり、HTTPステータスコードを心配するのではなく、特定の作業を集中させることができます。それは、ライブラリなしで物事を行うための時間と場所がないと言っているわけではありません。  —もちろん、通常はあなた自身で完全に行くよりも、他の人の仕事にもっと生産的になることができます。

関連する問題