2012-12-10 32 views
0

我來自PHP背景,所以我習慣於讓PHP文件處理所有的Ajax調用。使用JS函數調用Ajax,ASP.NET控件

最近,我被介紹給ASP.NET控件和環境一般。

我想知道,當它們應該從JavaScript文件調用時,處理ajax請求的正確方法是什麼?

此外,如果你有超過AJAX是更好的選擇(與ASP.NET),我希望看到一個小的實現你的,使用它,如果可能的話。

謝謝!蓋伊

+1

您所標記的問題,如ASP.NET MVC,而是說:「ASP.NET控件」將意味着Web窗體。你能告訴我們你在看哪種方法嗎? –

+0

你是絕對正確的,我缺乏知識導致我認爲它是相關的。 – Novak

+0

在這裏很重要的一點是要知道.net版本,它是內置的.Net 4.0+版本,並且以前必須添加一些配置和ajax工具包 –

回答

1

我已經看到了很多關於ASP.NET AJAX implentations的...但我認爲最好的是他們是我自己...:d

只是做一個像這樣的javascript函數:

<script type="text/javascript"> 
    function callasync(url, id_contenedor) { 
     var ajax = false; 

     if (window.XMLHttpRequest) { 
      //Mozilla, Safari, etc 
      ajax = new XMLHttpRequest(); 
     } 
     else if (window.ActiveXObject) { 
      //IE  
      try { 
       ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
      catch (e) { 
       //Versión antigua  
       try { 
        ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       catch (e) { 
       } 
      } 
     } 
     else 
      return false; 

     if (id_contenedor != '') { 
      document.getElementById(id_contenedor).innerHTML = "<table width='100%' height='100%'><tr><td style='text-align: center; vertical-align: center;'><a class='LabelInfo'>Whait...</a><br /><img src='Imagenes/Esperar.gif' /></td></tr></table>"; 
     } 

     ajax.onreadystatechange = function() { 
      pageload(ajax, id_contenedor); 
     } 

     ajax.open('GET', url, true); 
     ajax.send(null); 
    } 

    function pageload(ajax, id_contenedor) { 
     if (ajax.readyState == 4 && (ajax.status == 200 || window.location.href.indexOf("http") == -1)) 
      if (id_contenedor != '') { 
       document.getElementById(id_contenedor).innerHTML = ajax.responseText; 
       ResizeCanvas(); 
      } 
    } 
</script> 

然後調用函數 「callasync」 與URL和div的ID ...

callasync( 'mypage.aspx QS_KEY = 123?', 'DIVID');

在ASP.NET代碼隱藏...重寫Render方法是這樣的:

protected override void Render(HtmlTextWriter writer) 
{ 
    if (Request.QueryString["QS_KEY"] != null) 
    { 
     //render what you want. 
    } 
    else 
    { 
     base.Render(writer); 
    } 
} 
+0

我可以返回調用JS功能,當值?例如:'var SomeServerInfo = ajaxObject.requestServerInfo();'。或者,也許我只會返回'ajax.responseText'? – Novak

+0

我不這麼認爲......看看http://www.w3schools.com/ajax/ajax_examples.asp的回覆示例 – lem2802

+0

好的,謝謝你的幫助! – Novak