JQuery AJAX задержки формы отправки - PullRequest
0 голосов
/ 04 марта 2012

У меня есть этот jjery ajax-код, который отправляет мою форму, если она меняется.Моя единственная проблема заключается в том, что в моей форме также есть выбор jquery для страны, и каждый раз, когда я нажимаю на подсказку автозаполнения, отправляется форма со старым / последним значением get.Пример: я ищу «Австрия» и нажимаю на нее, и отправляется пустое значение.Затем я изменяю его на «Польша» и «на» для Австрии.Моя идея состоит в том, чтобы отложить вызов ajax: $ .ajax, но я не мог узнать, как.

<script type="text/javascript">
$(document).ready(
function submitFormAjax()
{
    $('#myForm').change(function() {
        $.ajax({
            type:"POST",
            url:"ajax.php",
            data:$(this).serialize(),
            success:function(data)
            {
                $("#ajaxList").html(data);

            }
        })

      return false;
    });
});
</script>

Ответы [ 3 ]

1 голос
/ 04 марта 2012

setTimeout сделает всю работу здесь:

$('#myForm').change(function() {
    var self = $(this);
    setTimeout(function () {
        $.ajax({
            type:"POST",
            url:"ajax.php",
            data:self.serialize(),
            success:function(data)
            {
                $("#ajaxList").html(data);

            }
        })
    }, 1000);
    return false;
});
0 голосов
/ 04 марта 2012
$('#myForm').change(function() {
 var val = $(this).serialize();
 setTimeout(delayAjax(val),1000);
});

определить задержку функции ajax

function delayAjax(formVal){

 $.ajax({
            type:"POST",
            url:"ajax.php",
            data:formVal,
            success:function(data)
            {
                $("#ajaxList").html(data);
            }
        });
};
0 голосов
/ 04 марта 2012

Не уверен, что это будет работать, трудно сказать, не видя больше кода, но вот как отложить $ .ajax!

$('#myForm').on('change', function() {
   setTimeout(submitFormAjax, 200);
   return false;
});
function submitFormAjax() {
    $.ajax({
        type:"POST",
        url:"ajax.php",
        data:$('#myForm').serialize(),
        success:function(data) {
            $("#ajaxList").html(data);
        }
    });
}
...