ホームページ > 記事 > ウェブフロントエンド > ajax関数とは何ですか?
ajax 関数には次のものが含まれます: 1. "$(selector).load()" (選択した要素にリモート データをロードするために使用)、2. "$.ajax()"、3. "$ .get ()"; 4. "$.post()"; 5. "$.getJSON()"; 6. "$.getScript()"。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
#AJAX リクエスト関数
説明 | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
選択した要素にリモート データをロードします | ||||||||||||||||||||||||||||||||||||||||||||||||
リモート データを XMLHttpRequest オブジェクトにロードします | ##$.get(url,data,callback,type) | |||||||||||||||||||||||||||||||||||||||||||||||
##$.post(url,data,callback,type) | ||||||||||||||||||||||||||||||||||||||||||||||||
$.getJSON (url,data, callback) | HTTP GET を使用してリモート JSON データをロードします | |||||||||||||||||||||||||||||||||||||||||||||||
$.getScript(url,callback) | リモート JavaScript ファイルをロードして実行します | |||||||||||||||||||||||||||||||||||||||||||||||
タイプ | 説明 | |
String | (デフォルト: 現在のページアドレス) リクエストを送信するアドレス。 | |
String | (デフォルト: "GET") リクエストメソッド ("POST" または "GET")、デフォルトは "GET" 。 | 注: PUT や DELETE などの他の HTTP リクエスト メソッドも使用できますが、一部のブラウザでのみサポートされます。 |
Number | リクエストのタイムアウト (ミリ秒) を設定します。この設定はグローバル設定をオーバーライドします。 | |
Boolean | (デフォルト: true) デフォルトでは、すべてのリクエストは非同期リクエストです。 | 同期リクエストを送信する必要がある場合は、このオプションを false に設定してください。 同期リクエストはブラウザをロックするため、他のユーザー操作はリクエストが完了するまで待ってから実行する必要があることに注意してください。 |
Function | カスタム HTTP ヘッダーの追加など、リクエストを送信する前に XMLHttpRequest オブジェクトを変更できる関数。 |
XMLHttpRequest オブジェクトが唯一のパラメータです。 function (XMLHttpRequest) { this; // この Ajax リクエストのオプション } function (XMLHttpRequest) { this; // この Ajax リクエストのオプション |
Boolean | (デフォルト: true) jQuery 1.2 の新機能、false に設定するとロードされませんブラウザキャッシュ内のリクエスト情報。 | |
Function | リクエスト完了後のコールバック関数(リクエストが成功または失敗したときに呼び出されます)。 |
パラメータ: XMLHttpRequest オブジェクト、成功情報文字列。 function (XMLHttpRequest, textStatus) { this; // this のオプション ajaxリクエスト } function (XMLHttpRequest, textStatus) { this; // この Ajax リクエストのオプション } |
String | (デフォルト: “application/x-www-form-urlencoded”) メッセージの送信先サーバーコンテンツのエンコードタイプ。デフォルト値はほとんどのアプリケーションに適しています。 | |
Object, | String | サーバーに送信されたデータ。リクエスト文字列形式に自動的に変換されます。 GET リクエストの URL に追加されます。 この自動変換を無効にするには、processData オプションの説明を参照してください。キー/値形式である必要があります。 配列の場合、jQuery は異なる値に対して同じ名前を自動的に対応させます。 たとえば、{foo:["bar1", "bar2"]} は「&foo=bar1&foo=bar2」に変換されます。 |
String | サーバーから返される予期されるデータ型。指定しない場合、jQuery は HTTP パケットの MIME 情報 | に基づいて、responseXML または responseText を自動的に返し、それをコールバック関数のパラメータとして渡します。利用可能な値: "xml": jQuery で処理できる XML ドキュメントを返します。 。 "html": プレーン テキストの HTML 情報を返します。スクリプト要素が含まれます。 "script": プレーンテキストの JavaScript コードを返します。結果は自動的にキャッシュされません。 "json": JSON データを返します。 "jsonp": JSONP 形式。 JSONP 形式を使用して関数を呼び出す場合、「myurl?callback=?」などの jQuery は、? を正しい関数名に自動的に置き換えてコールバック関数を実行します。 |
Function | (デフォルト:自動判定(xmlまたはhtml)) リクエストが失敗した場合にこのメソッドが呼び出されます。 | このメソッドには、XMLHttpRequest オブジェクト、エラー メッセージ、および (おそらく) キャプチャされたエラー オブジェクトという 3 つのパラメータがあります。 function (XMLHttpRequest, textStatus, errorThrown) { // 通常、textStatus と errorThown のいずれか 1 つだけが値 this; // この ajax のオプション リクエスト } 関数 (XMLHttpRequest、textStatus、errorThrown) { // 通常、textStatus と errorThown のいずれか 1 つだけが値 this; // この ajax のオプション request } |
Boolean | (デフォルト: true) グローバル AJAX イベントをトリガーするかどうか。 false に設定すると、グローバル AJAX イベント ( | ajaxStart や ajaxStop など) はトリガーされません。さまざまな Ajax イベントの制御に使用できます |
Boolean | (デフォルト: false) サーバー データが変更された場合にのみ新しいデータを取得します。 | HTTP パケットの Last-Modified ヘッダー情報を使用して判断します。|
processData | Boolean | (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 “application/x-www-form-urlencoded”。 如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。 |
success | Function |
请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态 function (data, textStatus) { // data could be xmlDoc, jsonObj, html, text, etc... this; // the options for this ajax request } function (data, textStatus) { // data could be xmlDoc, jsonObj, html, text, etc... this; // the options for this ajax request } |
你可以指定xml、script、html、json作为其数据类型,可以为beforeSend、error、sucess、complete等状态设置 处理函数,众多其它参数也可以订完完全全定义用户的Ajax体验。下面的例子中,我们用ajax()来调用一个XML文档:
$.ajax({ url: 'doc.xml', type: 'GET', dataType: 'xml', timeout: 1000, error: function(){ alert('Error loading XML document'); }, success: function(xml){ alert(xml); //此处xml就是XML的jQuery对象了,你可以用find()、next()或XPath等方法在里面寻找节点, 和用jQuery操作HTML对象没有区别 } });
进一步了解AJAX事件
前面讨论的一些方法都有自己的事件处理机制,从页面整体来说,都只能说是局部函数。jQuery提供了AJAX全局函数的定义,以满足特殊的需求。下面是jQuery提供的所有函数(按照触发顺序排列如下):
ajaxStart
(全局事件) 开始新的Ajax请求,并且此时没有其他ajax请求正在进行
beforeSend
(局部事件) 当一个Ajax请求开始时触发。如果需要,你可以在这里设置XMLHttpRequest对象
ajaxSend
(全局事件) 请求开始前触发的全局事件
success
(局部事件) 请求成功时触发。即服务器没有返回错误,返回的数据也没有错误
ajaxSuccess
全局事件全局的请求成功
error
(局部事件) 仅当发生错误时触发。你无法同时执行success和error两个回调函数
ajaxError
全局事件全局的发生错误时触发
complete
(局部事件) 不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件
ajaxComplete
全局事件全局的请求完成时触发
ajaxStop
(全局事件) 当没有Ajax正在进行中的时候,触发
局部事件在之前的函数中都有介绍,我们主要来看看全局事件。对某个对象进行全局事件监听,那么全局中的AJAX动作,都会对其产生影响。比如,当页面在进行AJAX操作时,ID为”loading”的p就显示出来:
$("#loading").ajaxStart(function(){ $(this).show(); });
全局事件也可以帮助你编写全局的错误相应和成功相应,而不需要为每个AJAX请求独立设置。有必要指出,全局事件的参数是很有用的。除了 ajaxStart、ajaxOptions,其他事件均有event, XMLHttpRequest, ajaxOptions三个参数。第一个参数即事件本身;第二个是XHR对象;第三个是你传递的ajax参数对象。在一个对象里显示全局的AJAX情况:
$("#msg").beforeSend(function(e,xhr,o) { $(this).html("正在请求"+o.url); }).ajaxSuccess(function(e,xhr,o) { $(this).html(o.url+"请求成功"); }).ajaxError(function(e,xhr,o) { $(this).html(o.url+"请求失败"); });
很显然,第三个参数也可以帮助你传递你在AJAX事件里加入的自定义参数。 在单个AJAX请求时,你可以将global的值设为false,以将此请求独立于AJAX的全局事件。
$.ajax({ url: "request.php", global: false, // 禁用全局Ajax事件. });
如果你想为全局AJAX设置参数,你会用上ajaxSetup()函数。例如,将所有AJAX请求都传递到request.php,;禁用全局方法;强制用POST方法传递:
$.ajaxSetup({ url: "request.php", global: false, type: "POST" });
【相关教程推荐:AJAX视频教程】
以上がajax関数とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。