Maison >interface Web >Questions et réponses frontales >Comment changer jquery ajax en synchronisation

Comment changer jquery ajax en synchronisation

WBOY
WBOYoriginal
2022-09-09 16:13:533971parcourir

Dans jquery, ajax peut définir async sur false pour le rendre synchronisé ; par défaut, ajax dans jquery est une requête asynchrone, c'est-à-dire "async:true". Vous pouvez définir le paramètre "asycn:false" et la syntaxe. est "$ .ajax({async: false})".

Comment changer jquery ajax en synchronisation

L'environnement d'exploitation de cet article : système Windows 10, jquery version 3.6.1, ordinateur Dell G3.

Comment changer jquery ajax en synchrone

ajax dans jquery est une requête asynchrone par défaut, c'est-à-dire async:true, vous pouvez le synchroniser en définissant le paramètre asycn:false

ajax est une requête asynchrone par défaut ; en ajax, vous pouvez utiliser async La valeur est différente pour déterminer s'il s'agit d'une requête asynchrone. Si la valeur de async est fausse, cela signifie que la requête ajax est synchrone. Si la valeur de async est vraie, cela signifie que l'ajax. La requête est asynchrone. Par défaut, la valeur de async est "true". Par conséquent, ajax est une requête asynchrone par défaut.

Si vous souhaitez synchroniser de manière asynchrone, définissez-le sur false (la valeur par défaut est true)

var html = $.ajax({
url: “some.php”,
async: false
}).responseText;

Ou définissez l'attribut Ajax globalement

$.ajaxSetup({
async: false
});

Utilisez post, get sera synchronisé

L'exemple est le suivant :

Généré de manière aléatoire Un entier à 10 chiffres est comparé à la base de données back-end. S'il y a ce nombre aléatoire dans la base de données back-end, un nouveau sera généré. Sinon, ce numéro sera renvoyé.

Cette exigence implique une interaction front-end et back-end, il est donc inévitable d'utiliser ajax, j'ai donc écrit ce morceau de code au début.

//randID是封装的生成随机数的函数
function userID() {
    let ranid = parseInt(randID(1000000000, 10000000001));
    let data = null;
    $.ajax({
        type: 'post',
        url: './php/findID.php',
        data: 'id=' + ranid,
        success: function(res) {
            res = JSON.parse(res);
            isok = res.length;
            if (isok != 0) {
                userID();
            } else {               
               return ranid;
            }
        }
    })
}
console.log(userID());

Résultat de sortie :

Comment changer jquery ajax en synchronisation

solution jquery.ajax

  • Déclarer une variable locale sous la fonction (en dehors d'ajax)

  • Traiter ajax comme un traitement synchrone (modification de jquery.ajax Méthode : Ajoutez ce code à async : false)

  • Renvoyer la variable locale déclarée

function userID() {
    let ranid = parseInt(randID(1000000000, 10000000001));
    //声明的局部变量
    let data = null;
    $.ajax({
        type: 'post',
        url: './php/findID.php',
        data: 'id=' + ranid,
        //将ajax改为同步操作
        async: false,
        success: function(res) {
            res = JSON.parse(res);
            isok = res.length;
            if (isok != 0) {
                console.log(ranid);
                userID();
            } else {
                data = ranid;
            }
        }
    })
    //返回这个局部变量
    return data;
}
console.log(userID());

Résultat de sortie :

Comment changer jquery ajax en synchronisation

Recommandations de didacticiel associées : Tutoriel vidéo jQuery

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn