2013-02-10 118 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這將阻止任何其他呼叫,直到當前已完成。