以前にも尋ねられたことのように聞こえるかもしれませんが、探し求めているものに一致するものは見つかりませんでした。
私は Ajax にかなり基づいたプロジェクトに取り組んでいます。私は jQuery を使用していますが、その美しく合理化されたコードを使用しても、data
フィールドを通過する 1 つのコマンドを除いて、コードがまったく同じであるという点に到達すると、まだ厄介です。
そこで、次のようにハンドラー関数内に設定してみました。
function _call(task, opts, async) {
if(typeof async !== "boolean") { async = true; }
opts = $.extend({}, opts, options);
$.ajax({
url: "myphpfile.php",
dataType:"JSON",
type:"POST",
async:async,
data: { task: task, opts: opts }
}).done(function(data) { return data; });
}
読み通せば
options
、この例では定義されていない var があることに気付くでしょう。実際には割り当てられていますが、わかりやすくするために省略されています。
async: false
に設定されていても、 の呼び出し後もコードが続行されるため、結果が間に合わないため、これが機能しないことに気付き_call(...)
ました。匿名関数をハンドラーに渡し、それを関数として使用するなど、いくつかの異なるバリエーションを試しましたが、.done()
外部変数と相互作用せず、目的が無効になります。
私が探しているのは、次のように使用できるシステムだけです。
var returnedData = _call("thisismytask");
var returnedDataWithOptions = _call("thisisanothertask", {'option': 'option1'});
これが可能になることを本当に願っています。関数の主な目的は、不必要に繰り返されるコードの必要性を取り除くことであるため、そうなると確信しています。
ありがとう。:)