最近、モジュールパターンを使用するようにjavascript/jqueryアプリケーションコードをリファクタリングしました。
2つのモジュールがあります。たとえばAとBです。
モジュールBには、jQuery AJAX JSONP呼び出し($ .ajax)を作成し、コールバックで応答を渡すパブリックメソッド(たとえば、Bmethod)が含まれています。
モジュールAの内部には、返された応答を処理するためのコールバック関数を使用したB.Bmethod()の呼び出しがあります。
モジュールBの定義は次のとおりです。
var B = (function()
{
var obj = {};
obj.Bmethod = function(data, callback)
{
//do JSONP AJAX call
callback(response);
}
return obj;
}());
ここで、モジュールBのメソッド呼び出しを使用したモジュールAの定義を示します。
var A = (function()
{
var doAjax = function(data)
{
B.Bmethod(data, function(response)
{
//Do something with the response
});
}
}());
モジュールAをロードして、コードの実行を開始する方法は次のとおりです。
$(document).ready(function()
{
A.doAjax(data);
});
ここでの問題は、ChromeとFirefoxで動作が異なることです。Chromeでは、AJAX呼び出しはまったく実行されていません。リクエストは送信されません。ただし、Firefoxでは、要求が行われたことを確認し、応答を返すこともできますが、成功のコールバックを受け取りません。
このコードをすべてモジュールの外に置いて、1つのファイルに入れると、すべてが正しく機能しているように見えます。
私は多くの人(StackOverflowでも)がAJAX呼び出しでモジュールパターンをうまく使用しているのを見てきましたが、私が間違っていることを理解することができませんでした。
アイデア/解決策はありますか?