簡體   English   中英

讓jQuery / Javascript等到另一個函數完成

[英]Make jQuery/Javascript wait until another function is done

我正在開發一個類似的系統,我設法讓它工作,但為了讓我正常工作,我需要它來檢查狀態是否被喜歡,如果是,那么不像它如果沒有,那就喜歡它。

現在,這是我的Javascript:

$('span#like-button<? echo $status_id; ?>').on('click', function(){
    var isLiked<?echo $status_id; ?> = '';
    var postid<? echo $status_id; ?> = $('input#postid<? echo $status_id; ?>').val();
    var userid<? echo $status_id; ?> = $('input#userid<? echo $status_id; ?>').val();
    var toid<? echo $status_id; ?> = $('input#toid<? echo $status_id; ?>').val();
    $.get('https://mysite/stuff/ajax/isliked.php', {postid: postid<?echo $status_id; ?>, userid: userid<?echo $status_id; ?>}, function(data){
        isLiked<?echo $status_id; ?> = data;
        console.log(data);
    });
    if(isLiked<?echo $status_id; ?> == "Yes"){
        console.log('Unliking Status');
    $.get('https://mysite/dash', {unlike: postid<? echo $status_id; ?>, userid: userid<? echo $status_id; ?>}, function(data){
        document.getElementById('like-button<? echo $status_id; ?>').innerHTML = 'Like';
    });
    } else if(isLiked<?echo $status_id; ?> == ""){
        console.log('Liking Status');
    $.get('https://mysite/dash', {like: postid<? echo $status_id; ?>, userid: userid<? echo $status_id; ?>, toid: toid<? echo $status_id; ?>},function(data){
        document.getElementById('like-button<? echo $status_id; ?>').innerHTML = 'Unlike';
    });
    } else {
        console.log("Error.");
    }
});

我的問題是它在運行$.get之前運行if語句來檢查狀態是否被喜歡。 因此,對於if語句,isLiked =='',因此嘗試喜歡它已經被喜歡的狀態,而不是能夠點擊不同的按鈕而不是狀態。

所以,我需要做的是,每次點擊,運行$.get()部分檢查我的isliked.php腳本,然后運行if()語句來檢查isLiked變量。

謝謝。

JavaScript在單個線程上運行,因此它總是等待函數在調用下一個函數之前返回。 但是, $.get執行AJAX調用,因此有一個觸發回調函數的事件。

實現目標的最“JS”式方式( AJAX調用完成之后推遲調用)將是將代碼移動到success回調:

$.get(url, data, function()
{
    //will only get called after first $.get is done
    $.get(url2, data2, function()
    {
    });
});

PS: <? echo <? echo不要使用短開標簽。 它們可以關閉。 使用<?php echo或危險性較小的短回聲標記: <?= $variable ?>
后者不能再被禁用( 因為PHP 5.4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM