2012-07-27 58 views
0

我知道我不能讓一個數據類型爲JSONP同步Ajax調用,想知道是否有對任何解決方法。我試圖學習JavaScript,並試圖寫一個函數帶jsonp解決方案的同步ajax調用?

chrome.omnibox.onInputChanged.addListener(function(text, suggest){ 
     var baseUrl = "http://sample.com"; 
     var finalResult = []; 
       $.ajax({ 
        url : baseUrl, 
        dataType : "jsonp", 
        success: function(result) { 
            for (var i=0; i<result[1].legnth; i++){ 
              finalResult.push(
               {content : result[1][i], description : result[1][i]} 
             ); 
            } 
           }, 
        async: false 
       });   
     suggest(finalResult); 
}); 

我需要提供我的ajax調用的結果的提示()函數。所以我需要ajax調用是同步的權利?我不能這樣做,因爲那時我遇到了同樣的原產地政策問題。任何幫助,將不勝感激。謝謝!

+3

將'suggest(finalResult);'移到''''''循環後''success'處理程序的最後。 – DCoder 2012-07-27 04:00:26

+0

可能重複:http://stackoverflow.com/questions/10780750/how-to-make-synchronous-jsonp-crossdomain-call – apsillers 2012-07-27 04:05:59

回答

1

調用從您的匿名成功功能提示功能,這樣Ajax調用可以是異步的。

chrome.omnibox.onInputChanged.addListener(function(text, suggest){ 
     var baseUrl = "http://sample.com"; 
     var finalResult = []; 
     $.ajax({ 
      url : baseUrl, 
      dataType : "jsonp", 
      success: function(result) { 
       for (var i=0; i<result[1].legnth; i++){ 
        finalResult.push(
          {content : result[1][i], description : result[1][i]} 
        ); 
       } 
       suggest(finalResult); 
      }, 
      async: true 
     });    
}); 
+0

好,我覺得自己很蠢哈哈。謝謝!一旦時間限制結束,你會接受你的答案 – iman453 2012-07-27 04:04:51