検索
ホームページウェブフロントエンドjsチュートリアルアヤックスとは何ですか? ajax の詳しい紹介

アヤックスとは何ですか? ajax の詳しい紹介

Jun 26, 2017 am 10:29 AM
ajaxjavascriptjs勉強テクノロジー

Ajax 自体はテクノロジーではありませんが、2005 年に Jesse James Garrett によって開拓され、HTML または XHTML、カスケード スタイル シート、JavaScript、ドキュメント オブジェクト モデル、XML などの多くの既存テクノロジーを適用する「新しい」方法として説明されています。 、XSLT、そして最も重要なのは XMLHttpRequest オブジェクトです。

これらのテクノロジーを ajax モデルに組み合わせると、Web アプリはブラウジング インターフェイス全体を更新するのではなく、ユーザー インターフェイスを迅速かつ段階的に更新できるため、アプリケーションが高速になり、ユーザー エクスペリエンスが向上します。
x は ajax の xml を表しますが、軽量で JavaScript の一部であるという利点のため、json がよく使用されます。 ajax モデルの json と xml は両方とも、データ情報をパッケージ化するために使用されます。

AJAX とは何ですか?

AJAX は、Asynchronous JavaScript And XML の略で、JSON、XML、HTML、テキスト ファイルなどのさまざまな方法で情報を送受信できます。 . AJAX の最も魅力的な機能は「非同期」です。これは、ページを更新せずにサーバーと通信してデータを交換できることを意味します。
ajax の主な 2 つの機能:
  • ページを更新せずにデータをリクエストする

  • サーバーからデータを取得する

ステップ 1 – リクエスト方法

サーバーをリクエストするにはJavaScript では、必要な機能を備えたオブジェクトをインスタンス化する必要があります。これが XMLHttpRequest の由来です。当初、Internet Explorer は XMLHTTP と呼ばれる ActiveX オブジェクトを実装していました。それ以来、Mozilla、Safari、およびその他のブラウザ メーカーは、このメソッドと Microsoft と同様の ActiveX オブジェクト機能をサポートするために XMLHttpRequest オブジェクトを次々に実装してきました。同時に、Microsoft は XMLHttpRequest も実装しました。
// 古い互換性コード、不要になりました。
if (window.window.ActiveXObject) { // IE 6 以前
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
注: 上記のコードは説明のみを目的としており、XMLHttp のインスタンスを作成するだけです。ステップ 3 に進んで、より実践的な例を確認できます。
リクエスト後、リクエスト結果を受け取る必要があります。この段階では、onreadystatechangeproperty メソッドを次のように構成することで、XMLHttp リクエスト オブジェクトにレスポンスの JavaScript メソッドを処理するように指示する必要があります。
httpRequest.onreadystatechange = nameOfTheFunction;
または
<code>httpRequest.onreadystatechange = function(){<br>    // Process the server response here.<br>};</code>
レスポンスを受け入れる方法を宣言した後、リクエストを開始する必要があります。 HTTP リクエスト オブジェクトを呼び出すことによる open() メソッドと send() メソッドは次のとおりです:
<code>httpRequest.open('GET', 'http://www.example.org/some.file', true);<br>httpRequest.send();</code>
open() の最初のパラメータは HTTP リクエスト メソッドです – GET、POST、HEAD、またはサーバーでサポートされているその他のメソッド。すべて大文字のメソッド名は HTTP 標準です。それ以外の場合、一部のブラウザ (例: Firefox) はリクエストを発行できない場合があります。 http リクエスト メソッドの詳細については、「W3C 仕様」をクリックしてください。
  • 2 番目のパラメータは、リクエストされる URL です。セキュリティ上の理由から、デフォルトではクロスドメイン URL リクエストを行うことはできません。すべてのページが同じドメイン名の下にあることを確認してください。そうしないと、open() メソッドを呼び出すときに「アクセス許可が拒否されました」エラーが発生します。 よくあるクロスドメインの問題は、Web サイトのドメイン名がdomain.tld であるにもかかわらず、www.domain.tld を使用してページにアクセスしようとすることです。本当にクロスオリジンリクエストを実行したい場合は、HTTP アクセス制御を確認してください。

  • オプションの 3 番目のパラメーターは、このリクエストが同期か非同期かを設定します。 true (デフォルト値) の場合、JavaScript は実行を継続し、ユーザーがページを操作している間、サーバーはデータを返します。これがAJAXです。

  • send() メソッドのパラメータには、サーバーに送信 (POST) する任意のデータを指定できます。フォーム データは、サーバーが解析できる形式 (クエリ文字列:

    "name=value&anothername="+encodeURIComponent(myVar)+"&so=on"
  • など)、またはその他の形式 (multipart/form-data、JSON、XML など) である必要があります。
データを POST する場合は、リクエストの MIME タイプを設定する必要がある場合があることに注意してください。たとえば、send() を呼び出す前に次のコードを追加して、フォーム データをクエリ データとして送信します:
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ステップ 2 – サーバー応答
リクエストを処理するときに、応答を処理するための JavaScript メソッドを提供しました:
httpRequest.onreadystatechange = nameOfTheFunction;

この方法は何をするのですか?まず、リクエストのステータスを確認する必要があります。値が XMLHttpRequest.DONE (4) の場合、すべてのサーバー応答が受け入れられたことを意味します。

<code>if (httpRequest.readyState === XMLHttpRequest.DONE) {<br>    // Everything is good, the response was received.<br>} else {<br>    // Not ready yet.<br>}</code>
readyState のすべての可能な値は、次のように XMLHTTPRequest.readyState で確認できます。または (リクエストの実行)
  • 4 (完了) または (リクエストが完了し、応答の準備ができていますリクエスト完了の応答が準備されています)
  • Value

  • State
  • Description

  • 0

  • UNSENT
  • クライアントが作成されました。open() はまだ呼び出されていません。1OPENEDopen() が呼び出され、ヘッダーとステータスが利用可能です。3LOADINGダウンロード中;部分的なデータを保持します。4DONE操作は完了しました。
    (Source)
    接下来,检查HTTP响应的 response code 。查看 W3C看到可能的值。下面例子我们用response code是不是等于200来判断ajax请求是否成功。
    <code>if (httpRequest.status === 200) {<br>    // Perfect!<br>} else {<br>    // There was a problem with the request.<br>    // For example, the response may have a 404 (Not Found)<br>    // or 500 (Internal Server Error) response code.<br>}</code>
    检查完响应值后。我们可以随意处理服务器返回的数据,有两个选择获得这些数据:
    • httpRequest.responseText – 返回服务器响应字符串

    • httpRequest.responseXML – 返回服务器响应XMLDocument 对象 可以传递给JavaScript DOM 方法

    上面的代码只有在异步的情况下有效(open() 的第三个参数设置为true)。如果你用同步请求,就没必要指定一个方法。但是我们不鼓励使用同步请求,因为同步会导致极差的用户体验。

    Step 3 – 一个简单的例子

    我们把上面的放在一起合成一个简单的HTTP请求。我们的JavaScript 将请求一个HTML 文档, test.html, 包含一个字符串 "I'm a test."然后我们alert()响应内容。这个例子使用普通的JavaScript — 没有引入jQuery, HTML, XML 和 PHP 文件应该放在同一级目录下。
    <code><button id="ajaxButton" type="button">Make a request</button><br><br><script><br/>(function() {<br/>  var httpRequest;<br/>  document.getElementById("ajaxButton").addEventListener(&#39;click&#39;, makeRequest);<br/><br/>  function makeRequest() {<br/>    httpRequest = new XMLHttpRequest();<br/><br/>    if (!httpRequest) {<br/>      alert(&#39;Giving up :( Cannot create an XMLHTTP instance&#39;);<br/>      return false;<br/>    }<br/>    httpRequest.onreadystatechange = alertContents;<br/>    httpRequest.open(&#39;GET&#39;, &#39;test.html&#39;);<br/>    httpRequest.send();<br/>  }<br/><br/>  function alertContents() {<br/>    if (httpRequest.readyState === XMLHttpRequest.DONE) {<br/>      if (httpRequest.status === 200) {<br/>        alert(httpRequest.responseText);<br/>      } else {<br/>        alert(&#39;There was a problem with the request.&#39;);<br/>      }<br/>    }<br/>  }<br/>})();<br/></script></code>
    在这个例子里:
    • 用户点击"Make a request” 按钮;

    • 事件调用 makeRequest() 方法;

    • 请求发出,然后 (onreadystatechange)执行传递给 alertContents();

    • alertContents() 检查响应是否 OK, 然后 alert() test.html 文件内容。

     
     
    注意 1: 如果服务器返回XML,而不是静态XML文件,你必须设置response headers 来兼容i.e.。如果你不设置headerContent-Type: application/xml, IE 将会在你尝试获取 XML 元素之后抛出一个JavaScript "Object Expected" 错误 。
     
     
    注意 2: 如果你不设置header Cache-Control: no-cache 浏览器将会缓存响应不再次提交请求,很难debug。你可以添加永远不一样的GET 参数,例如 timestamp 或者 随机数 (查看 bypassing the cache)
     
    注意 3: 如果 httpRequest 变量是全局的,混杂调用 makeRequest()会覆盖各自的请求,导致一个竞争的状态。在一个closure 里声明 httpRequest 本地变量 来避免这个问题。
    在发生通信错误(如服务器崩溃)、onreadystatechange方法会抛出一个异常,当访问响应状态。为了缓解这个问题,你可以用ry…catch包装你的if...then 语句:
    <code>function alertContents() {<br>  try {<br>    if (httpRequest.readyState === XMLHttpRequest.DONE) {<br>      if (httpRequest.status === 200) {<br>        alert(httpRequest.responseText);<br>      } else {<br>        alert('There was a problem with the request.');<br>      }<br>    }<br>  }<br>  catch( e ) {<br>    alert('Caught Exception: ' + e.description);<br>  }<br>}</code>

    Step 4 – 使用 XML 响应

    在前面的例子里,在获取到响应之后,我们用request 对象responseText 属性获得 test.html 文件内容。现在让我们尝试获取responseXML 属性。
    首先,让我们创建一个有效的XML文档,留着待会我们请求。(test.xml)如下:
    <code><?xml version="1.0" ?><br><root><br>    I'm a test.<br></root></code>
    在这个脚本里,我们只要修改请求行为:
    <code>...<br>onclick="makeRequest('test.xml')"><br>...</code>
    然后在alertContents()里,我们需要把 alert(httpRequest.responseText); 换为:
    <code>var xmldoc = httpRequest.responseXML;<br>var root_node = xmldoc.getElementsByTagName('root').item(0);<br>alert(root_node.firstChild.data);</code>
    这里获得了responseXML的XMLDocument,然后用 DOM 方法来获得包含在XML文档里面的内容。你可以在here查看test.xml,在here查看修改后的脚本。

    Step 5 – 使用数据返回

    最后,让我们来发送一些数据到服务器,然后获得响应。我们的JavaScript这次将会请求一个动态页面,test.php将会获取我们发送的数据然后返回一个计算后的字符串 - "Hello, [user data]!",然后我们alert()出来。
    首先我们加一个文本框到HTML,用户可以输入他们的姓名:
    <code><label>Your name: <br>  <input type="text" id="ajaxTextbox"><br></label><br><span id="ajaxButton" style="cursor: pointer; text-decoration: underline"><br>  Make a request<br></span></code>
    我们也给事件处理方法里面加一行获取文本框内容,并把它和服务器端脚本的url一起传递给 makeRequest() 方法:
    <code>  document.getElementById("ajaxButton").onclick = function() { <br>      var userName = document.getElementById("ajaxTextbox").value;<br>      makeRequest('test.php',userName); <br>  };</code>
    我们需要修改makeRequest()方法来接受用户数据并且传递到服务端。我们将把方法从 GET 改为 POST,把我们的数据包装成参数放到httpRequest.send():
    <code>function makeRequest(url, userName) {<br><br>    ...<br><br>    httpRequest.onreadystatechange = alertContents;<br>    httpRequest.open('POST', url);<br>    httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');<br>    httpRequest.send('userName=' + encodeURIComponent(userName));<br>  }</code>
    如果服务端只返回一个字符串, alertContents() 方法可以和Step 3 一样。然而,服务端不仅返回计算后的字符串,还返回了原来的用户名。所以如果我们在输入框里面输入 “Jane”,服务端的返回将会像这样:
    {"userData":"Jane","computedString":"Hi, Jane!"}
    要在alertContents()使用数据,我们不能直接alert responseText, 我们必须转换数据然后 alert computedString属性:
    <code>function alertContents() {<br>  if (httpRequest.readyState === XMLHttpRequest.DONE) {<br>    if (httpRequest.status === 200) {<br>      var response = JSON.parse(httpRequest.responseText);<br>      alert(response.computedString);<br>    } else {<br>      alert('There was a problem with the request.');<br>    }<br>  }<br>}</code>
    test.php 文件如下:
    <code>$name = (isset($_POST['userName'])) ? $_POST['userName'] : 'no name';<br>$computedString = "Hi, " . $name;<br>$array = ['userName' => $name, 'computedString' => $computedString];<br>echo json_encode($array);</code>
    查看更多DOM方法, 请查看 Mozilla's DOM implementation 文档。

以上がアヤックスとは何ですか? ajax の詳しい紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、