[英]Jquery poll request only if variable != 'something'
我有以下代碼:
<script>
$(function() {
(function poll(){
setTimeout(function(){
var process_id = $("#form3_progress_process_id").val();
if(process_id != 'undefined') {
$.ajax({
type: "POST",
url: "grab.php",
data: "action=step3_progress&process_id=" + process_id,
success: function(data){
console.log("successful");
}, dataType: "json", complete: poll, timeout: 30000 });
}
}, 2000);
})()
});
</script>
<input type="hidden" id="form3_progress_process_id" value="undefined">
我想要的是,如果來自輸入form3_progress_process_id的值不是' undefined ',則它僅發送查詢。
一開始它是“ undefined ”,但一段時間后它被jquery更改了。
但是,以上代碼由於任何原因都不起作用。 更改值后,它不會開始發送請求。
我怎么了
僅在input
從頭開始的2秒內發生更改時,您的代碼才會觸發。 您應該在else
添加對poll方法的調用,這樣循環不會中斷:
$(function() {
(function poll(){
setTimeout(function(){
var process_id = $("#form3_progress_process_id").val();
if(process_id != 'undefined') {
$.ajax({
type: "POST",
url: "grab.php",
data: "action=step3_progress&process_id=" + process_id,
success: function(data){
console.log("successful");
}, dataType: "json", complete: poll, timeout: 30000 });
}else{
poll(); ////Add this!!
}
}, 2000);
})()
});
來自玻利維亞拉巴斯的歡呼聲
除非您的隱藏輸入在2秒鍾內發生變化,否則計時器將不會再次觸發。 更改為setInterval
setInterval(function(){
var process_id = $("#form3_progress_process_id").val();
if(process_id != 'undefined') {
$.ajax({
type: "POST",
url: "grab.php",
data: "action=step3_progress&process_id=" + process_id,
success: function(data){
console.log("successful");
}, dataType: "json", complete: poll, timeout: 30000 });
}
}, 2000);
})()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.