php - jQuery AJAX 调用两次

标签 php javascript jquery ajax json

我已经发布了一个关于它的问题,但我已经弄清楚确切的问题是什么。现在,我需要一个解决方案:)

这是我的代码:

$('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');
        }
    });
});

问题与解释:

每次触发一个键时,它都会加载这个 ajax。如果我的 JSON 文件找到 keyword,它会返回 error = false 标志。你看,如果发生这种情况,它会加载效果、更改等...

问题是,当您开始输入时,例如 asdasdasd 之后我粘贴/写入 keyword 会有一些 ajax 查询哪些是还在处理中。这些正在修改和加载 fadeOut-In 效果 X 次。

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

提前致谢, 马赛尔

最佳答案

我个人会让脚本等待,这样它就不会在每次键入时都触发。实际上我可能会使用 http://jqueryui.com/autocomplete/

但是您可以在重试之前中止 ajax。

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

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

关于php - jQuery AJAX 调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798519/

相关文章:

php - 通过 composer 添加 illuminate/mail 时出错

javascript - 单击“喜欢”按钮时,它应该显示特定数据吗?

javascript - $ ("#Test") 在 Safari 中变成对象而不是 jQuery

Jquery UI 自动完成方法不过滤数据?

javascript - 拉拉维尔 : $request->all() gives empty array when called with json xhr

php - WordPress 插入 MySQL 转换

javascript - onChange 不起作用

jquery - 要让超大背景幻灯片图像不覆盖全屏?

php - 表单值的 SQL 更新不起作用

javascript - 遍历对象中的 JavaScript 数组以在 HTML 中显示