2010-10-19 2 views
0

У меня есть работа Ajax call. Теперь мне нужно параметризовать его, поскольку один и тот же Ajax может использовать все разные сценарии на сервере.Можно ли использовать параметр для вызова loadXMLDoc() из html? (ajax)

Мне нужно

  • перспективе различные сценарии в xmlhttp.open("GET","/ajaxrun?run=login_build",true);
  • имя DIV «s в HTML, так что Аякса обновит правильно тд

Какой способ сделать это в Ajax?

Я думал

  • Я бы назвал loadXMLDoc как <button onclick='loadXMLDoc("login_build")' type='button'>, а затем
  • изменить объявление функции в function loadXMLDoc(script, function() и
  • изменения самого начала позвонить в xmlhttp.open("GET","/ajaxrun?run="+script,true); и, наконец
  • изменить дел до document.getElementById(script).innerHTML=xmlhttp.responseText;

но ничего не делает

немного моего HTML

<script type='text/javascript'> 
     //<![CDATA[ 
     function loadXMLDoc() 
     { 
      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() 
      { 
      document.getElementById("run").innerHTML=xmlhttp.readyState; 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
       { 
       document.getElementById("run").innerHTML=xmlhttp.responseText; 
       } 
      } 
      xmlhttp.open("GET","/ajaxrun?run=login_build",true); 
      xmlhttp.send(); 
     } 
     //]]> 
    </script> 
    </head> 
    <body> 
    <h1>Available test suits</h1> 

    <br/><br/> 
    <table> 
     <tr> 
     <td> 
      <a href='run?run=login_build'>login_build</a> 
     </td> 
     <td> 
      <button onclick='loadXMLDoc()' type='button'> 

      run 
      </button> 
     </td> 
     <td> 
      <div id='run'>script results</div> 
     </td> 
     </tr> 
     <tr> 
     <td> 

      <a href='run?run=login_cycle_build'>login_cycle_build</a> 
     </td> 
     <td> 
      <button onclick='loadXMLDoc()' type='button'> 
      run 
      </button> 
     </td> 
     <td> 
      <div id='run'>script results</div> 

     </td> 
     </tr> 

ответ

1

JQuery было сделано для этого вида работ. Как правило, вы не хотите, чтобы весь этот шаблон был сверху, чтобы создать объект XHR.

В частности, мне нравится прохождение литералов объектов вокруг, чтобы сделать этот тип универсального кода возможно:

function generic(params) { 
    if (params.div && params.div instanceof Array && params.div.size() > 0) { 
     //multiple divs handling goes here 
    } 
    ajax(params.url, params.params); 
} 


generic({ 
    divs: ['div1','div2'], 
    url: 'http://google.com', 
    params: { 
    param1:'hello', 
    param2:'hi' 
    } 
}) 
+0

Должен ли я использовать jQuery или могу ли я сделать это, используя чистый Ajax, как в Вот? http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first – Radek

+0

Вы можете использовать все, что захотите, но нет ничего небедного в jQuery AJAX. Все это - централизованная, хорошо разработанная кросс-браузерная реализация AJAX. По сути, это библиотека, которую вы можете использовать в любом месте. Вышеизложенное не зависит от jQuery. Это просто Javascript –

+0

Я просто не хотел вводить jQuery из-за одной мелочи. А также это помогло мне понять, как это работает ... спасибо за вашу помощь. – Radek

1

сценарии должна называться просто через function loadXMLDoc(what_to_run)

<script type='text/javascript'> 
    //<![CDATA[ 
    function loadXMLDoc(what_to_run) 
    { 
     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() 
     { 
     document.getElementById(what_to_run).innerHTML="<BLINK> processing ...</BLINK>" 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
      document.getElementById(what_to_run).innerHTML=xmlhttp.responseText; 
      } 
     } 
     xmlhttp.open("GET","/ajaxrun?run="+what_to_run,true); 
     xmlhttp.send(); 
    } 
    //]]> 

и немного от <BODY>

<td> 
     <button onclick='loadXMLDoc("login_build")' type='button'> 

     run 
     </button> 
    </td> 
    <td> 
     <div id='login_build'>script results</div> 
    </td> 
+1

+1 для настойчивости :) – kfl62