JQuery スクリプトについていくつか質問があります (私は JQuery の世界が初めてです)。
ビューページには、次のリンクがあります。
<li>
<a id="byHeader" href="<c:url value="/mapping/header" />">By presence of header</a>
</li>
このリンクをクリックすると、「/mapping/header」フォルダーへの HTTP リクエストが生成されます。
ビュー ページには、前のリンクに関連する次の JQuery コードもあります。
$("#byHeader").click(function(){ // Select the link having id="byHeader" and assign to it the following callback function executed on the click event
var link = $(this); // Variable refered to the link tag that triggered the event
/* La chiamata AJAX non viene invocata su un oggetto particolare (quindi direttamente su $)
I parametri di input sono: 1) L'URL del link selezionato 2) Il tipo di risposta previso (una stringa)
*/
$.ajax({ url: this.href, dataType: "text",
// Before sending the HTTP Request: execute a function that add an Header to this HTTP Request
beforeSend: function(req) { req.setRequestHeader("FooHeader", "foo"); },
// Success case:
success: function(form) {
MvcUtil.showSuccessResponse(form, link);
},
// Error case:
error: function(xhr) {
MvcUtil.showErrorResponse(xhr.responseText, link);
}
});
return false;
});
おそらく私の疑問は些細なことであり、JQuery の知識が不足していることに依存しています...
1) 最初の dount は、次のコード行の req 変数を考慮します。
beforeSend: function(req) { req.setRequestHeader("FooHeader", "foo"); },
このコード行により、HTTP リクエストにヘッダーを追加してサーバーに送信していると思います。
私の問題は、「req」という名前の変数が何を指しているのかを理解することです。これは私のHTTPリクエストに言及されていると思いますが、私の問題は、以前に宣言したことがないことです...以前にコードで宣言したことがなくても使用しています(そしてうまく機能します)!!! なぜそれが機能するのですか?
beforeSend を使用すると、関数の HTTP 要求への参照を含むパラメーター変数が自動的に作成されると考えています...しかし...最終的に、それが正しいかどうかわかりません...
2) 次のコード行に関する 2 番目の疑問:
success: function(form) {
MvcUtil.showSuccessResponse(form, link);
},
これらのコード行は、成功の場合 (スクリプトがヘッダーを HTTP 要求に追加できる場合) を処理します...
JQueryの成功APIドキュメントを読んで、成功メソッド(メソッドですか?そうですか?)がサーバーから返されたデータをパラメーターとして受け入れることを理解しました...
コードでわかるように、サーバーはクライアントにテキスト文字列を返します (実際には、dataType: "text" があります)...前のコード行で、パラメーターが "form" と名付けられているのはなぜですか?
サーバーは、「フォーム」ではなくテキストをクライアントに返します...何か不足していますか?
そして...この場合も:フォーム変数を作成していません。これは、サーバーから返されたデータを含む「汎用」変数であり、前の行でJSON形式を使用しているため、使用できますアヤックスコール?
どうもありがとうございました
アンドレア