2

ajaxツールキットを使用せずにASP.net Webフォームでajaxを実行できますか? (例のリンクを投稿してください)

4

7 に答える 7

4

はい...この投稿の私の例を参照してください

AJAX - 値をサーバーに戻す方法

これは ASP.NET ajax よりもはるかに優れたパフォーマンスを発揮しますが、コーディングに時間がかかります。

于 2008-10-24T20:24:57.960 に答える
1

もちろん。ajax という用語が造られる前から、人々は何年もの間 ajax を行ってきました。Jquery は、ページを更新せずにサーバーにコールバックするために使用できる人気のあるライブラリです。

于 2008-10-24T20:28:33.867 に答える
0

はい!

ASP.NET AJAX の代替手段は無数にあります。それらのほとんどは実際にも優れています。私のプロジェクトをチェックしてみてください。あなたのニーズに合わせたRa-Ajax :)

于 2008-11-20T09:22:20.200 に答える
0

人気のあるツールは次のとおりです: AjaxPro

他の人が指摘したように、XmlHttpRequest オブジェクトと JavaScript を使用して、すべてを自分でコーディングできます。しかし、アプリが非常に洗練された手法を使用する場合、自分でコードを書くのは非常に面倒です。ツールはより強力になり、使いやすくなりました。

ASP.Net Ajax には 2 つの要素があります。1 つは、Visual Studio 2008 に含まれ、Visual Studio 2005 に追加できる Ajax 拡張機能です。これは、「ツールキット」よりもはるかに多くの機能に使用できます。完全なポストバックを実行せずに、部分的なページの更新やデータの取得など。もう 1 つは、別のダウンロードである Ajax Control Toolkit です。「ツールキット」には、主に派手なコントロール、特に DHTML 効果 (表示、非表示、アニメーションの模倣) を備えたコントロールが含まれています。

于 2008-10-24T20:40:41.220 に答える
0

ああ絶対に。

UpdatePanel とそれを取り巻くすべての道具の代わりに、ASP.NET フォームで使用できるjQueryなどのライブラリがあります。

私が以前働いていた場所では、AJAX という言葉が登場するずっと前から AJAX を行っていました。これは、私たちのものが IE でしか動作しなかった時代のことです :-)

ASP.NET サーバー コントロールを使用している ASP.NET フォームで行う必要があることの 1 つは、JavaScript からコントロールを参照するときにサーバーがコントロール用に生成する正しいクライアント ID を使用することです。したがって、「telephoneNumber」などの ID を持つラベルがある場合は、それを <%=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

于 2008-10-24T20:41:56.990 に答える
0

確かにできます!私が .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);
    }
  }
}

[重要な注意: 上記はテストされておらず、実際には適切に設計されておらず、コンパイルすらできない可能性がありますが、正しい考えが得られるはずです。]

于 2008-10-24T20:26:35.820 に答える
0

Ajax とは、ユーザーが Web ページを見ている間に JavaScript を使用して、サーバーに戻って別のものを取得することを意味します。次に、DOM である JavaScript を使用して、フェッチした内容でページを更新します。

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)
}   
于 2008-10-24T21:24:28.167 に答える