beforeSend
섹션에서 나는 setTimeout
을 추가했습니다. ajax가 20 초 이상 걸리면 시간 초과 메시지가 나타납니다. 아약스가 20 초 전에 성공하면 setTimeout
이 계속 실행 중이며 시간 초과 메시지가 나타납니다.성공하면 setTimeout을 중지하는 방법은 무엇입니까?
아약스가 20 초 이내에 완료되면 시간 초과 메시지가 나타나지 않도록하려면 어떻게해야합니까? 도 20 :
형태
<?= $form->field($relasi, 'npsn')->textInput(['class' => 'form-control', 'id' => 'npsn', 'onkeyup' => 'sendFirstCategory(this.value)', 'autocomplete' => 'off'])->label(false); ?>
자바 스크립트
function sendFirstCategory(npsn)
{
var test = npsn;
var timeoutvar = null;
$.ajax({
url: '<?php echo \Yii::$app->getUrlManager()->createUrl('keranjang/isi-data-ajax') ?>',
type: 'POST',
data: { test: test },
beforeSend:function()
{
$('#hokya').show();
$('#hokya').html('<img src="../img/Preloader_1.gif" alt="Loading..." />');
var a = "";
$('form [id=nm_sekolah]').val(a);
$('form [id=email]').val(a);
$('form [id=telp]').val(a);
$('form [id=alamat]').val(a);
$('form [id=penanggung_jawab]').val(a);
timeoutvar = setTimeout(function() {
$("#hokya").hide();
$('#login-modal').modal('show');
$('form [id=nm_sekolah]').val(a);
$('form [id=email]').val(a);
$('form [id=telp]').val(a);
$('form [id=alamat]').val(a);
$('form [id=penanggung_jawab]').val(a);
}, 20000);
},
success: function(data)
{
clearTimeout(timeoutvar);
var o = $.parseJSON(data);
$.each(o, function(key, value){
$('form [id=' + key + ']').val(value);
});
$('#hokya').hide();
}
});
}
'clearTimeout (timeout)'을 시도해 보셨습니까? – NewToJS
* "[성공] 거기에 clearTimeout을 선언하면 setTimeout이 여전히 실행 중입니다."* 성공한 처리기에서 'clearTimeout()'이있는 곳에서 작동하지 않는 코드를 표시하려면 질문을 편집하십시오. 그리고 제쳐두고, 왜 당신은''form [id = nm_sekolah] '와 같은 셀렉터를 사용하고 있습니까? 왜''# nm_sekolah ''가 아닌가? – nnnnnn
죄송합니다. 나는 그것을 편집했다. ''form [id = nm_sekolah] ''그냥 잘 작동했습니다. @nnnnnn –