簡體   English   中英

您可以在不使用ASP.net ajax工具包的情況下進行ajax嗎?

[英]Can you do ajax without using ASP.net ajax toolkit?

您可以在不使用Ajax工具包的情況下在ASP.net Webform上執行Ajax嗎? (請發布示例鏈接)

是的,請參閱本文中的示例

AJAX-如何將價值傳遞回服務器

與ASP.NET ajax相比,此方法的性能要好得多,但是編寫代碼的時間更長。

當然。 人們一直在使用ajax多年,甚至還沒有創造出ajax這個詞。 jQuery是一個流行的庫,您可以使用它來調用服務器,而無需刷新頁面。

當然可以! 我在.NET 1.1(發布ASP.Net Ajax之前)所做的工作是定義一個HttpHandler來偵聽對ajax.aspx調用,運行適當的方法,然后吐出結果。 我使用Prototype庫進行Ajax調用,盡管您可以使用其他任何方法,也可以手動進行。

我正在記憶中,但這是我使用的代碼(用於.NET 2.0,但您明白了):

// client-side js:
var foo = new Ajax.Request('ajax.aspx',
{
   method:'get',
   parameters: { method: 'GetFive' },
   onSuccess: function(transport){
     var response = transport.responseText || "no response text";
     alert("Success! \n\n" + response);
},
onFailure: function(){ alert('Something went wrong...') }
});

// web.config:
<httpHandlers>
  <!-- pre existing handlers go here -->
  <add verb="GET" path="ajax.aspx" type="Fully.Qualified.Name.AjaxHandler, AssemblyName" validate="false" />
</httpHandlers>

// AjaxHandler.cs
public class AjaxHandler : IHttpHandler {
  internal delegate object AjaxFunction();

  private Dictionary<string, AjaxFunction> functions;

  public bool IsReusable {
    get { return true; }
  }

  public void ProcessRequest(HttpContext context) {
    this.functions = new Dicionary<string, AjaxFunction>();
    this.functions.Add("GetFive", delegate() {
      return 5;
    });

    string functionName = context.Request["method"];
    AjaxFunction func = this.functions[functionName];
    if (func != null) {
      object val = func();
      context.Response.Write(val);
    }
  }
}

[重要說明:以上內容未經測試,並且設計得不夠好,甚至可能無法編譯,但是應該可以給您正確的想法。]

這是一個流行的工具: AjaxPro

正如其他人指出的那樣,您可以使用XmlHttpRequest對象和javascript自己編寫整個代碼。 但是,如果您的應用程序將使用非常復雜的技術,那么自己編寫代碼將變得非常乏味。 這些工具已經變得功能強大且易於使用。

附帶說明,ASP.Net Ajax有兩個元素。 一種是Visual Studio 2008中包含的Ajax擴展,可以將其添加到Visual Studio 2005中。與“工具箱”相比,它可以用於更多功能。 諸如在不執行完整回發的情況下刷新部分頁面和檢索數據之類的事情。 另一個是Ajax Control Toolkit,它是單獨下載的。 “工具箱”主要包括精美的控件,尤其是具有DHTML效果的控件(顯示,隱藏,模擬動畫)。

真是的

您可以在ASP.NET表單中使用諸如jQuery之類的庫,而不是UpdatePanel及其周圍的所有用具。

在我以前工作的地方,很久以前我們都在做AJAX。 在那個年代,我們的東西以前只能在IE中工作:-)

在使用ASP.NET服務器控件的ASP.NET表單中,需要做的一件事是使用服務器從JavaScript引用控件時為控件生成的正確客戶端ID。 因此,如果您有一個ID為'telephoneNumber'的標簽,則需要將其引用為<%= telephone.ClientID%>。 例如

$("#<%=telephoneNumber.ClientID %>").attr("disabled", "disabled");

使用jQuery之類的庫,您仍然可以調用ASP.NET Web服務,但是最好研究WCF和JSON序列化。

您不必扔掉ASP.NET ajax位中的所有內容,我仍然使用腳本服務來調用Web服務。 直到我可以替換為JSON為止,它已經完成了一半:

http://msdn.microsoft.com/en-us/magazine/cc163499.aspx

Ajax只是意味着當用戶使用javascript查看您的網頁時,返回服務器並獲取其他內容。 然后使用javascript使用DOM更新您所獲取的頁面。

XMLHttpRequest對象很好,但是即使在它還沒有實現之前,您都可以使用隱藏的IFRAME來做同樣的事情。

這是您開始需要的所有javascript代碼:

function GetXmlHttpObject()
{
    var objXMLHttp=null
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
}


function stateChanged()
{
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
        // do something with xmlHttp.responseText
    }
}


function SendAsyncHttpRequest()
{
    xmlHttp=GetXmlHttpObject()

    if (xmlHttp==null)
    {
        return
    }

    var url = "http://YOUR_URL"
    xmlHttp.onreadystatechange=stateChanged
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
}   

是!

那里是ASP.NET AJAX的“替代品”。 實際上,其中大多數也更好。 您可能要檢查我的項目; Ra-Ajax滿足您的需求:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM