2011-07-22 11 views
0

私のサイトのナビゲーションには以下のコードがあります。コードの大部分が同じであるので、私はこれを凝縮する方法があるかどうか疑問に思っていました。私はAJAXの新人です。おかげ複数の同様のAJAXコードを組み合わせる

function web() 
{ 
if(XMLHttpRequestObject) { 
    var obj = document.getElementById('content'); 
    XMLHttpRequestObject.open("GET", "./nav/web.html"); 


    XMLHttpRequestObject.onreadystatechange = function() 
    { 
     if (XMLHttpRequestObject.readyState == 4 && 
     XMLHttpRequestObject.status == 200) { 

      obj.innerHTML = XMLHttpRequestObject.responseText; 
      } 
     } 
    XMLHttpRequestObject.send(null); 
    } 
} 

function prices() 
{ 
if(XMLHttpRequestObject) { 
    var obj = document.getElementById('content'); 
    XMLHttpRequestObject.open("GET", "./nav/prices.html"); 


    XMLHttpRequestObject.onreadystatechange = function() 
    { 
     if (XMLHttpRequestObject.readyState == 4 && 
     XMLHttpRequestObject.status == 200) { 

      obj.innerHTML = XMLHttpRequestObject.responseText; 
      } 
     } 
    XMLHttpRequestObject.send(null); 
    } 
} 

function clientList() 
{ 
if(XMLHttpRequestObject) { 
    var obj = document.getElementById('content'); 
    XMLHttpRequestObject.open("GET", "./nav/clientlist.html"); 


    XMLHttpRequestObject.onreadystatechange = function() 
    { 
     if (XMLHttpRequestObject.readyState == 4 && 
     XMLHttpRequestObject.status == 200) { 

      obj.innerHTML = XMLHttpRequestObject.responseText; 
      } 
     } 
    XMLHttpRequestObject.send(null); 
    } 
} 
+0

を使用する[jquery](http://jquery.com) – genesis

答えて

0

はい、あなたは、代わりに、各プロセスに機能を有していると、すべてのリクエストを保持する「テンプレート」に建設され、その後、ここで

switch(b) { case "web" : XMLHttpRequestObject.open("GET", "./nav/web.html"); break; case "prices" : XMLHttpRequestObject.open("GET", "./nav/prices.html"); 

ように使用する変数を渡していることができますサンプル

function dameloPapa(a,b,c) { 
if (a=="") 
    { 
    document.getElementById(c).innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById(c).innerHTML=xmlhttp.responseText; 
    } 
    } 
switch(b){ 
case "web" : XMLHttpRequestObject.open("GET", "./nav/web.html?id"+a); break; 
//etc... 
} 
xmlhttp.send(); 

はdameloPapa( '変数'、 'OP'、 'div_id')あなただけのJavaScript(のonchange、onclickの、など)を使用してコードで呼び出すこの方法です。結果を表示する

私はこれが私が欲しいときにいつでも呼び出すように最適化しました。私はこれをPHP、MySQL、そして魅力のように動作します。

+0

これは実際にはOPの問題の解決策として最適ではないようです。特に、文字列スイッチはルックアップを送出します... –

+0

jquery、dojoなどを使用して、多くの方法で行うことができます。ajaxは組み込みで、今は彼が尋ねるもののために、とてもシンプルでクリーンです。スクリプトはうまく動作します。 – JRoquez

+0

は、そのスタイルでビルド関数を投資した時間がより創造的な追求に費やされる可能性が高いと主張していません。 –

関連する問題