web-dev-qa-db-fra.com

jQuery: Exécution de requêtes synchrones AJAX

J'ai déjà fait du jQuery par le passé, mais je suis complètement coincé là-dessus. Je connais les avantages et les inconvénients de l'utilisation d'appels ajax synchrones, mais ici, il sera nécessaire.

La page distante est chargée (contrôlée par firebug), mais aucun retour n'est affiché.

Que dois-je faire différemment pour que ma fonction revienne correctement?

function getRemote() {

    var remote;

    $.ajax({
        type: "GET",
        url: remote_url,
        async: false,
        success : function(data) {
            remote = data;
        }
    });

    return remote;

}
177
Industrial

Lorsque vous faites une demande synchrone, cela devrait être

function getRemote() {
    return $.ajax({
        type: "GET",
        url: remote_url,
        async: false
    }).responseText;
}

Exemple - http://api.jquery.com/jQuery.ajax/#example-

VEUILLEZ NOTER: Définir la propriété async sur false est obsolète et dans le processus d'être enlevé ( lien ). De nombreux navigateurs, y compris Firefox et Chrome, ont déjà commencé à imprimer un avertissement dans la console si vous utilisez ceci:

Chrome:

Synchronous XMLHttpRequest sur le thread principal est obsolète en raison de ses effets néfastes sur l'expérience de l'utilisateur final. Pour plus d'aide, consultez https://xhr.spec.whatwg.org/ .

Firefox:

Synchronous XMLHttpRequest sur le thread principal est obsolète en raison de ses effets néfastes sur l'expérience de l'utilisateur final. Pour plus d'aide http://xhr.spec.whatwg.org/

287
Dogbert

Vous utilisez la fonction ajax de manière incorrecte. Comme il est synchrone, les données en ligne seront renvoyées comme suit:

var remote = $.ajax({
    type: "GET",
    url: remote_url,
    async: false
}).responseText;
30
Jake

quelle distance est cette url? est-ce du même domaine? le code a l'air bien

essaye ça

$.ajaxSetup({async:false});
$.get(remote_url, function(data) { remote = data; });
// or
remote = $.get(remote_url).responseText;
17
TheBrain
function getRemote() {
    return $.ajax({
        type: "GET",
        url: remote_url,
        async: false,
        success: function (result) {
            /* if result is a JSon object */
            if (result.valid)
                return true;
            else
                return false;
        }
    });
}
3
user3116547