2013-02-10 51 views
1

我已经发布了一个关于它的问题,但我已经知道确切的问题是什么。现在,我需要一个解决方案:)jQuery AJAX调用两次

这里是我的代码:

$('input[type="text"][name="appLink"]').unbind('keyup').unbind('ajax').keyup(function() { 

    var iTunesURL = $(this).val(); 
    var iTunesAppID = $('input[name="iTunesAppID"]').val(); 

    $.ajax({ 
     type: 'POST', 
     url: jsonURL, 
     dataType: 'json', 
     cache: false, 
     timeout: 20000, 
     data: { a: 'checkiTunesURL', iTunesURL: iTunesURL, iTunesAppID: iTunesAppID }, 
     success: function(data) { 
      if (!data.error) { 
       $('section.submit').fadeOut('slow'); 
       //Modifying Submit Page 
       setTimeout(function() { 
        $('input[name="appLink"]').val(data.trackViewUrl); 
        $('div.appimage > img').attr('src', data.artworkUrl512).attr('alt', data.trackName); 
        $('div.title > p:nth-child(1)').html(data.trackName); 
        $('div.title > p:nth-child(2)').html('by '+data.sellerName); 
        $('span.mod-category').html(data.primaryGenreName); 
        $('span.mod-size').html(data.fileSizeBytes); 
        $('span.mod-update').html(data.lastUpdate); 
        $('select[name="version"]').html(data.verSelect); 
        $('input[name="iTunesAppID"]').attr('value', data.trackId); 
       }, 600); 
       //Showing Submit Page 
       $('section.submit').delay('600').fadeIn('slow'); 
      } else { 
       $('.json-response').html(data.message).fadeIn('slow'); 
      } 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      //$('.json-response').html('Probléma történt! Kérlek próbáld újra később! (HTTP Error: '+errorThrown+' | Error Message: '+textStatus+')').fadeIn('slow'); 
      $('.json-response').html('Something went wrong! Please check your network connection!').fadeIn('slow'); 
     } 
    }); 
}); 

的问题和解释:

每次一键被触发了,它加载此阿贾克斯。如果我的JSON文件找到keyword,则返回error = false标志。你看,如果它发生,它加载的效果,改变,等等......

问题是,当你开始键入,例如asdasdasd和刚才我粘贴/写keyword会有一些ajax查询哪些仍在处理中。这些人正在修改和加载fadeOut-In效果X次。

所以我需要一个解决方案来停止处理Ajax请求,而另一个键被按下!

由于提前, 马塞尔

回答

1

我个人有脚本的等待,因此没有对每个KEYUP火。其实我可能会使用http://jqueryui.com/autocomplete/

但是你可以在重试之前放弃ajax。

... 
var iTunesAppID = $('input[name="iTunesAppID"]').val(); 

if (typeof req!='undefined' && req!=null) req.abort(); 
req = $.ajax({ 
... 
+0

什么也没有发生,它不运行ajax – Skylineman 2013-02-10 14:07:21

+0

控制台中的任何错误? – Popnoodles 2013-02-10 14:08:52

+0

它需要'var',但仍然不会中止正在运行的查询! – Skylineman 2013-02-10 14:11:46

1

尝试添加选项async: false到你的Ajax这将阻止任何其他呼叫,直到当前已完成。