2013-02-10 7 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, в то время как другой нажат!

Спасибо заранее, Marcell

ответ

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

+0

Любые ошибки в консоли? – Popnoodles

+0

Ему понадобился 'var', но все же не прерывая выполняемые запросы! – Skylineman

1

попробуйте добавить опцию async: false к вашей AJAX это предотвратит любые другие вызовы, пока текущий не закончено.

Смежные вопросы