0

$.post を使用するときにブレークポイントを使用すると、Page_Load イベントが再び発生することがわかりました。では、$.post の用途は何ですか?これは部分的なポストバックですか?

Page_Load イベントが両方の場合 (サーバー側の呼び出し、$.post) で発生する場合、$.post の利点は何ですか?

4

4 に答える 4

5

$.post を使用して同じページにアクセスしていると思いますが、これは ajax を使用する目的を完全に無効にします。リクエストを直接処理する Web サービス (ま​​たは別のページ) に $.post する必要があります。

また、主な質問に対処するために、 $.post は技術的にはポストバックではありません。xmlHttpRequest (ajax) です。「部分ポストバック」という用語は、一般に ajax を指します。

于 2013-02-22T18:32:44.370 に答える
2

$.post()は、ページの を送信せずにサーバーにHTTP POSTリクエストを発行します<form>。部分ポストバックも完全ポストバックも発生しません。

しかし、そのようにページへの URL をリクエストすると、実際にそれが提供され、そのPage_Loadハンドラーが実行されます。

ページ メソッドを呼び出そうとしている場合は、指定した を変更する必要があります (または、忘れた場合は[WebMethod]dataType属性でページ メソッドを装飾します)。

于 2013-02-22T18:33:25.870 に答える
0

$.post には最大の利点があります。ユーザーは、ページが更新されたかどうかを知りませんでした。彼は、ページを更新しなくてもデータを見ることができます。

于 2013-02-22T18:32:54.800 に答える
0

従来、ウェブページはコンテンツを更新するために再読み込みが必要でした。これは、Web ベースの電子メールの場合、ユーザーが手動で受信ボックスを再読み込みして、新しいメールがあるかどうかを確認する必要があることを意味していました。これには大きな欠点がありました。遅く、ユーザー入力が必要でした。ユーザーが受信トレイをリロードすると、サーバーは Web ページ全体を再構築し、HTML、CSS、JavaScript、およびユーザーの電子メールをすべて再送信する必要がありました。これは非常に非効率的でした。理想的には、サーバーはページ全体ではなく、ユーザーの新しいメッセージのみを送信する必要があります。2003 年までに、すべての主要なブラウザーは XMLHttpRequest (XHR) オブジェクトを採用することでこの問題を解決し、ページのリロードを必要とせずにブラウザーがサーバーと通信できるようにしました。

XMLHttpRequest オブジェクトは、Ajax (Asynchronous JavaScript and XML) と呼ばれるテクノロジの一部です。Ajax を使用すると、Web ページをリロードすることなく、XMLHttpRequest API を使用してブラウザーとサーバーの間でデータを渡すことができます。XMLHttpRequest オブジェクトが広く採用されるようになったことで、Google マップや、ページ全体をリロードすることなく XMLHttpRequest を使用して新しいマップ タイルや新しい電子メールを取得する GMail などの Web アプリケーションをすぐに構築できるようになりました。

Ajax リクエストは JavaScript コードによってトリガーされます。コードはリクエストを URL に送信し、レスポンスを受信すると、コールバック関数をトリガーしてレスポンスを処理できます。リクエストは非同期であるため、リクエストの処理中もコードの残りの部分は引き続き実行されます。そのため、コールバックを使用してレスポンスを処理することが不可欠です。

残念ながら、ブラウザによって Ajax API の実装は異なります。通常、これは、Ajax が普遍的に機能することを保証するために、開発者がすべての異なるブラウザーを考慮する必要があることを意味していました。幸いなことに、jQuery は Ajax サポートを提供し、ブラウザーの厄介な違いを抽象化します。フル機能の $.ajax() メソッドと、$.get()、$.getScript()、$.getJSON()、$.post()、および $().load などの単純な便利なメソッドの両方を提供します。 ().

「Ajax」という名前にもかかわらず、ほとんどの jQuery アプリケーションは実際には XML を使用していません。代わりに、プレーンな HTML または JSON (JavaScript Object Notation) としてデータを転送します。

一般に、Ajax は複数のドメインでは機能しません。たとえば、example1.com から読み込まれた Web ページは、example2.com に対して Ajax リクエストを行うことができません。これは、同一オリジン ポリシーに違反するためです。回避策として、JSONP (JSON with Padding) はタグを使用して、任意の JavaScript コンテンツと JSON を含むファイルを別のドメインから読み込みます。最近では、クロスオリジン リソース共有 (CORS) と呼ばれるテクノロジがブラウザーに実装され、異なるドメインへの Ajax 要求が可能になりました。

重要な概念

Ajax 関連の jQuery メソッドを適切に使用するには、まずいくつかの重要な概念を理解する必要があります。

GET と Post

サーバーにリクエストを送信する最も一般的な 2 つの「メソッド」は、GET と POST です。それぞれの適切なアプリケーションを理解することが重要です。

GET メソッドは、非破壊的な操作、つまり、サーバー上のデータを変更するのではなく、サーバーからデータを「取得」するだけの操作に使用する必要があります。たとえば、検索サービスへのクエリは GET 要求である場合があります。GET リクエストはブラウザによってキャッシュされる可能性があり、予期しない場合、予期しない動作につながる可能性があります。GET 要求は通常、すべてのデータをクエリ文字列で送信します。

POST メソッドは、破壊的な操作、つまりサーバー上のデータを変更する操作に使用する必要があります。たとえば、ブログ投稿を保存するユーザーは POST 要求である必要があります。通常、POST リクエストはブラウザによってキャッシュされません。クエリ文字列は URL の一部にすることができますが、データは投稿データとして個別に送信される傾向があります。

データ型

一般に、jQuery では、Ajax リクエストから返されると予想されるデータのタイプに関する指示が必要です。データ型がメソッド名で指定される場合もあれば、構成オブジェクトの一部として提供される場合もあります。いくつかのオプションがあります:

文章

単純な文字列の転送用

html

ページに配置する HTML のブロックを転送するため

脚本

ページに新しいスクリプトを追加するため

json

文字列、配列、およびオブジェクトを含むことができる JSON 形式のデータを転送するため

ノート

jQuery 1.4 の時点で、サーバーから送信された JSON データが適切にフォーマットされていない場合、リクエストは暗黙のうちに失敗する可能性があります。JSON を適切にフォーマットする方法の詳細については、 http://json.orgを参照してください。ただし、一般的な規則として、組み込みの言語メソッドを使用してサーバー上で JSON を生成し、構文の問題を回避してください。

jsonp

JSON データを別のドメインから転送する場合

xml

カスタム XML スキーマでのデータの転送用

私は、ほとんどの場合、JSON 形式を使用することを強く支持しています。JSON 形式が最も柔軟性が高いからです。HTML とデータの両方を同時に送信する場合に特に便利です。

A は非同期用です

Ajax の非同期性は、多くの新しい jQuery ユーザーを油断させます。Ajax 呼び出しはデフォルトで非同期であるため、応答はすぐには利用できません。応答は、コールバックを使用してのみ処理できます。したがって、たとえば、次のコードは機能しません。

123456789 var 応答; $.get( "foo.php", function( r ) { 応答 = r; }); console.log(応答); // 未定義

代わりに、リクエストにコールバック関数を渡す必要があります。このコールバックは、リクエストが成功したときに実行され、返されたデータがあればアクセスできます。

123 $.get( "foo.php", function( response ) { console.log( response ); // サーバーの応答});

同一生成元ポリシーと JSONP

一般に、Ajax リクエストは、リクエストを行うページと同じプロトコル (http または https)、同じポート、および同じドメインに限定されます。この制限は、jQuery の Ajax メソッドを介して読み込まれるスクリプトには適用されません。

もう 1 つの例外は、別のドメインの JSONP サービスを対象とするリクエストです。JSONP の場合、サービスのプロバイダーは、タグを使用してページにロードできるスクリプトでリクエストに応答することに同意しているため、同じオリジンの制限を回避できます。そのスクリプトには、要求したデータが含まれ、指定したコールバック関数にラップされます

于 2013-02-22T18:57:56.020 に答える