ホームページ >ウェブフロントエンド >jsチュートリアル >ajaxでコマンドを取ります
GmailやGoogleマップなど、よりダイナミックで応答性の高いデスクトップのようなWebアプリケーションを構築したいですか?それからこの記事はあなたのためです! Ajaxの基本と、単純なAjaxアプリケーションを構築するプロセスを通じてあなたを案内します。
このアプリケーションは、通常シェルアクセスが必要なシステムコマンドを実行するためのブラウザインターフェイスであるWebConsoleという名前です。また、2つの一般的なJavaScriptライブラリのAJAX機能を使用した短い例 - jqueryとYui。 この記事では、2005年に最初に公開され、最近更新されたこの記事では、HTTPリクエストを作成するための1つのシンプルで再利用可能なJavaScript関数の作成について説明します。次に、単純なアプリケーションの作成にその関数を適用します。YuiとjQueryの例はいくつかありますが、この記事は特定のAjaxライブラリのチュートリアルではありません。代わりに、HTTPリクエストの作成に関するより多くの実践的な情報を提供することを目指しています。そうすれば、そのようなライブラリを評価したり、自分で行くことを決定したりするときに、より良い位置にあります。
キーテイクアウト
ajaxは、ブラウザ内でHTTPリクエストを処理することにより、GmailとGoogleマップと同様の動的で応答性の高いWebアプリケーションを作成できます。
「私はテストです」というテキストのみが含まれている単純なHTMLドキュメントTest.htmlをリクエストする例を見てみましょう。次に、test.htmlファイルの内容を()lasert()
に確認します
この例の仕組みは次のとおりです
この関数は、3つのパラメーターを受信します:
応答が受信されたときに呼び出す関数
コールバック関数がXMLドキュメント(true)またはプレーンテキスト(false、default)を期待している場合、フラグ<button >Make a request</button> <br> <br> <script type="text/javascript"> <br> <br> var http_request = false; <br> <br> function makeRequest(url) { <br> <br> if (window.XMLHttpRequest) { // Mozilla, Safari, IE7... <br> http_request = new XMLHttpRequest(); <br> } else if (window.ActiveXObject) { // IE6 and older <br> http_request = new ActiveXObject("Microsoft.XMLHTTP"); <br> } <br> http_request.onreadystatechange = alertContents; <br> http_request.open('GET', url, true); <br> http_request.send(null); <br> <br> } <br> <br> function alertContents() { <br> if (http_request.readyState == 4) { <br> if (http_request.status == 200) { <br> alert(http_request.responseText); <br> } else { <br> alert('There was a problem with the request.'); <br> } <br> } <br> } <br> <br> document.getElementById('mybutton').onclick = function() { <br> makeRequest('test.html'); <br> } <br> <br> </script>
この関数は、リクエストオブジェクトをうまくラップおよび分離するために、2つのJavaScript機能に依存しています。 1つ目は、このように、そのように、その場で新しい関数(匿名関数と呼ばれる)を定義する機能です。
http_request.onreadystatechange = function(){...} もう1つのトリックは、事前に名前を知らずにコールバック関数を呼び出す機能です。たとえば、test.htmlファイルの内容がalert()edであった前の例をやり直しましょう。今回は、光沢のある新しい再利用可能な要求関数を使用することにより、使用される2つの関数の改訂版がはるかに簡単になります。
<button >Make a request</button> <br> <br> <script type="text/javascript"> <br> <br> var http_request = false; <br> <br> function makeRequest(url) { <br> <br> if (window.XMLHttpRequest) { // Mozilla, Safari, IE7... <br> http_request = new XMLHttpRequest(); <br> } else if (window.ActiveXObject) { // IE6 and older <br> http_request = new ActiveXObject("Microsoft.XMLHTTP"); <br> } <br> http_request.onreadystatechange = alertContents; <br> http_request.open('GET', url, true); <br> http_request.send(null); <br> <br> } <br> <br> function alertContents() { <br> if (http_request.readyState == 4) { <br> if (http_request.status == 200) { <br> alert(http_request.responseText); <br> } else { <br> alert('There was a problem with the request.'); <br> } <br> } <br> } <br> <br> document.getElementById('mybutton').onclick = function() { <br> makeRequest('test.html'); <br> } <br> <br> </script>ご覧のとおり、AlertContents()は単純なプレゼンテーションです。
これらの関数は1ライナーにすぎないため、実際にそれらを完全に取り除き、代わりに関数呼び出しを変更できます。したがって、例全体が次のようになります
はい、そんなに簡単です!例と完全なソースコードを表示します(古い友人ビューソースから入手可能)。
function makeHttpRequest(url, callback_function, return_xml) <br> { <br> var http_request, response, i; <br> <br> var activex_ids = [ <br> 'MSXML2.XMLHTTP.3.0', <br> 'MSXML2.XMLHTTP', <br> 'Microsoft.XMLHTTP' <br> ]; <br> <br> if (window.XMLHttpRequest) { // Mozilla, Safari, IE7+... <br> http_request = new XMLHttpRequest(); <br> if (http_request.overrideMimeType) { <br> http_request.overrideMimeType('text/xml'); <br> } <br> } else if (window.ActiveXObject) { // IE6 and older <br> for (i = 0; i < activex_ids.length; i++) { <br> try { <br> http_request = new ActiveXObject(activex_ids[i]); <br> } catch (e) {} <br> } <br> } <br> <br> if (!http_request) { <br> alert('Unfortunately your browser doesn't support this feature.'); <br> return false; <br> } <br> <br> http_request.onreadystatechange = function() { <br> if (http_request.readyState !== 4) { <br> // not ready yet <br> return; <br> } <br> if (http_request.status !== 200) { <br> // ready, but not OK <br> alert('There was a problem with the request.(Code: ' + http_request.status + ')'); <br> return; <br> } <br> if (return_xml) { <br> response = http_request.responseXML; <br> } else { <br> response = http_request.responseText; <br> } <br> // invoke the callback <br> callback_function(response); <br> }; <br> <br> http_request.open('GET', url, true); <br> http_request.send(null); <br> }
私たちのプロジェクト:WebConsoleアプリケーション
ajaxの基本を知り、リクエストを行う再利用可能な方法で武装して、もっと深く行きましょう。実際に使用できる小さなものを作成します。
html
これがアプリケーションのHTML部分です:
それだけです:a
以上がajaxでコマンドを取りますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。