SCORM 20044thEdition用のJavaScriptAPIを作成しています。SCORMについて知らない人のために、基本的にはeラーニングコースがLMS(学習管理システム)と通信するために使用できるAPI標準です。ここで、APIには次のメソッドが必要です。
- Initialize(args)
- GetValue(key)
- SetValue(key、value)
- 終了(args)
- Commit(args)
- GetDiagnostic(args)
- GetErrorString(args)
- GetLastError()
ここで、Initializeを何よりも先に呼び出す必要があり、Terminateを最後に呼び出す必要があります。GetValue / SetValueは、その間のどこからでも呼び出すことができます。私が行っているのは、Initializeメソッドで、WebサービスからJSONを取得し、それをAPIに保存しています(後でGetValue / SetValueメソッドを使用するときに使用します)。私が遭遇している問題は、jQueryを介したAJAX呼び出しが非同期であるため、JSONがロードされる前にInitializeメソッド呼び出しを実行できることです。それが現状であるため、Initializeを呼び出した後にGetValueを呼び出すと、GetValueが使用するJSONがまだ存在しないために予期しない問題が発生する可能性があります。私の質問はこれです:GetValue / SetValueメソッドが呼び出される前にJSONがロードされるようにするにはどうすればよいですか?簡単な答えは同期させることですが、それはほとんどお勧めできません。私のためにそれをやりたいようです。これに関する私のコードは次のとおりです。
function GetJSON(){
var success = false;
$.ajaxSetup({async:false}); //should make it synchronous
$.getJSON("http://www.mydomain.com/webservices/scorm.asmx/SCORMInitialize?
learnerID=34&jsoncallback=?",
function(data){
bind(data);
success = true;
}
);
return success;
}
function bind(data){
this.cmi = eval("(" + data.d + ")");
$.ajaxSetup({async:true}); //should make it asynchronous again
}
誰かアイデアはありますか?とても感謝しております!