2012-07-27 59 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