2017-09-14 10 views
2

ページ上の選択ドロップダウンリストは、AJAXコールから次のように入力されます。何がうまくいかないのは、callback()メソッド呼び出しの直後にいくつかの追加コードを実行する必要がありますが、コールバックの残りの部分には決して続かないということです。私はでメソッドを呼び出す必要がAjaxコールバックの選択

success: function (result) { 
     window.setTimeout(function() { 
      callback(result.data); 
     }, 0); 

     loadAdditionalInformation(recordID); 
} 

を:私はこれを行う場合、それは動作しますが、しかし

var $ddl = $("#ContactID"); 
var control = $ddl[0].selectize; 

control.load(function() { 
    $.ajax({ 
     url: "validURL", 
     type: "post", 
     dataType: "json", 
     data: { 
     id: recordID 
     }, 
     error: function() { 
     alert("Error retrieving data"); 
     callback(); 
     }, 
     success: function (result) { 
     callback(result.data); 
     //Does not get called below 
     loadAdditionalInformation(recordID); 
     } 
    }); 
}); 

:たとえば、成功コールバックに次は特定され、追加のコードを実行されませんポイントがリストがロードされているので、私はそれを継続したいとは思っていません。だから、callback()メソッドコールの後に成功コールバックが途絶えるのはなぜですか?

+0

意味がありません。タイムアウト0は内部関数を非同期にするので、コールバック関数中の説明はエラー/無限ループのみです。それは間違いですがコンソールをチェックしましたか? – bigless

+0

@biglessそれは完璧に良い質問です、そして、Zamronyは正しかった、私はパラメータを忘れてしまったので、私は未定義を扱っていましたが、それは何らかの理由で飲み込まれました。繰り返しますが、私は答えとして 'setTimeout'を提案していませんでしたが、気づいて試したことがありました.... –

答えて

0

loadは、2つのパラメータ、queryおよびcallbackが必要です。

$('#ContactID').selectize({ 
     .... 
     load : function (query, callback) { 
     $.ajax({ 
      .... 
      success : function(res) { 
        callback(res.data); 
        doOtherThings(res); 
      } 
     }); 
     } 
}); 

あなたのコードは、これらのパラメータのいずれかを通過しないので、success()が呼び出されたときに、callback()関数が未定義である可能性が非常に高いです。 私はブレークポイントを入れて、それを調べることを勧めます。

関連する問題