8

主にサーバー側のプログラマー(ASP.NET WebForms)でしたが、Microsoft AJAXコントロールでUpdatePanelsを使用するという「キャッチオール」アプローチの外で、AJAXに頭を悩ませようとしています。私の質問にはいくつかの部分があります:

  1. JavaScriptは、サーバー側の通信をサポートするクライアント側のスクリプトの唯一のオプションですか?そうでない場合は、代替手段は何ですか。
  2. AJAXアプリケーションの「一般的な」アーキテクチャとは何ですか?サーバー側のリソース(Webサービスを通じて公開されるデータ/リモート機能)と対話するのは、JavaScript(クライアント側のスクリプト)だけですか?これらは単純な質問のように見えるかもしれませんが、JavaScriptの「ニュアンス」を考えると、AJAXはまだ私には「黒魔術」のように見えます。ありがとう!
4

5 に答える 5

8

これが短くて甘いバージョンです。

  1. いいえ、しかしそれは実際に幅広いブラウザでサポートされている唯一の言語です。IEだけを気にする場合は、VBScriptを使用できますが、JSを使用して幅広いサポートを得るのは余分な努力ではないため、ほとんどの人がJSを使用します。

  2. AJAXは見た目ほど複雑ではありません。簡単に言うと、ブラウザで実行されるのはクライアント側のコードであり、XMLHttpRequestオブジェクトを使用してWebサーバーからクエリするデータに基づいて現在のページのレイアウトまたはコンテンツを変更します。

最も複雑な部分は、さまざまなブラウザのさまざまな構文/動作を処理することです。そのため、ほとんどの人は、そのほとんどを抽象化するフレームワークを使用します。

これは、AJAXを使用した単純な「HelloWorld」スクリプトです。

<script type="text/javascript">
var http = createRequestObject();
function createRequestObject() {
    var objAjax;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        objAjax = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        objAjax = new XMLHttpRequest();
    }
    return objAjax;
}

function getNewContent(){
http.open('get','newcontent.txt');
http.onreadystatechange = updateNewContent;
http.send(null);
return false;
}

function updateNewContent(){
if(http.readyState == 4){
document.getElementById('mySentence').innerHTML = http.responseText;
}
}
</script>

出典:http ://www.openhosting.co.uk/articles/webdev/5899/

最後の複雑さは、サーバーから返されたものを、コードが処理できる適切な形式に解析することです。最も一般的なオプトンは次のとおりです。

  • JSON: JavaScriptのEVAL関数を使用してオブジェクトに簡単に解析します。複数の属性を持つ単一のエンティティに関する情報を取得するのに最適です。

  • XML: JSに組み込まれているDOMメソッドを使用すると、ある程度簡単に解析できますが、JSONよりも複雑です。より多くの制御が必要な場合、またはXSLT変換を実行したい場合、これは適切なオプションです。理論的には、クライアントで悪意のあるコードを実行する可能性のある任意の文字列をEVALに渡す必要がないため、少し安全と見なすことができますが、これについては議論の余地があります。

  • 非構造化テキスト:単一の値を戻したいだけの場合、他の2つの方法は少しやり過ぎになる可能性があります。

于 2009-09-29T19:40:42.913 に答える
2

AJAXは通常、クライアント側とサーバー側の間のデータの交換であり、必要に応じてランナーであり、もちろんその逆も同様です。

AJAXの進歩は、オープンソース、「ソーシャル」Web、およびアマチュアとプロの両方の開発者の急速に拡大するネットワークの台頭と密接に関連しています。これにより、多くのJavaScriptフレームワーク(jQueryPrototypeMootoolsGlowなど)の開発が促進されました。これらのフレームワークは、あなたが言及した「ニュアンス」を本質的に削除するか、少なくとも非常にうまくマスクします。

ただし、AJAXは、サーバー側のスクリプトと対話する単なるクライアント側のスクリプトではありません。プレゼンテーション用のXHTMLとCSS、データの動的表示と相互作用のためのドキュメントオブジェクトモデル、データの交換と操作と表示のためのXMLとXSLT(最近ではJSON )、非同期通信用のXMLHttpRequestオブジェクトとそして最後にJavaScriptを使用して、これらのテクノロジーを統合します(wikipedia)。

クライアント側のソリューションはAJAX/JavaScriptだけではありません。たとえば、JavaやFlashなどの他の確立されたソリューションが今でもその役割を果たしています。しかし、JavaScriptは、ほとんどの場合、最新のすべてのブラウザーで広くサポートされており、実際、これらのブラウザーのJavaScriptエンジンは急速に速度を上げており、フロントエンドとバックエンド間のシームレスな対話の可能性がさらに広がります。

私があまりワッフルしなかったことを願っています、あなたは尋ねました;)

于 2009-09-29T19:39:23.557 に答える
2

サーバー側通信をサポートするクライアント側スクリプトの唯一のオプションは JavaScript ですか? そうでない場合、代替手段は何ですか。

はい、Javascript を使用します。VBScript などの他のオプションも利用できる場合がありますが、最も広く採用されている Javascript を使用することをお勧めします。

AJAX アプリケーションの「一般的な」アーキテクチャとは何ですか? サーバー側のリソース (Web サービスを通じて公開されるデータ/リモート機能) と対話するのは、単に JavaScript (クライアント側のスクリプト) ですか?

その通りです。Web サービスまたは汎用ハンドラーは、必要なデータを JSON または XML 形式で提供します。どちらも Javascript で簡単に処理できます。

私の意見では、ほとんどの ASP.NET Web フォーム開発者が AJAX で失敗するのは、非同期の側面です。

于 2009-09-29T19:42:16.123 に答える
0

現在のすべての回答は適切ですが、1 つの点を無視しています。AJAX はスクリプトでも言語でもテクノロジでもありません。AJAX で何かを記述することはできません。AJAX は単なるバンドル用語です。

これはウィキペディアからです:

DHTML や LAMP と同様に、AJAX はそれ自体がテクノロジーではなく、テクノロジーのグループです。AJAX は次の組み合わせを使用します。

  • 情報をマークアップおよびスタイリングするための HTML および CSS。
  • 提示された情報を動的に表示および操作するために JavaScript でアクセスされる DOM。
  • ブラウザとサーバー間で非同期にデータを交換する方法。これにより、ページのリロードを回避できます。通常は XMLHttpRequest (XHR) オブジェクトが使用されますが、代わりに IFrame オブジェクトまたは動的に追加されたタグが使用される場合があります。
  • ブラウザに送信されるデータの形式。一般的な形式には、XML、書式設定済みの HTML、プレーン テキスト、JavaScript Object Notation (JSON) などがあります。このデータは、何らかの形式のサーバー側スクリプトによって動的に作成される可能性があります。
于 2009-09-29T20:00:23.390 に答える
-1

JavaScriptの代替VbScript(名前を付ける必要があり、MSテクノロジであり、IEでのみ機能することに注意する必要がある場合)が、実際には、JavaScriptはクライアント側のスクリプトで広く受け入れられているソリューションです。

Ajaxについては、以下のSOディスカッションを参照してください。

于 2009-09-29T19:40:04.260 に答える