JQuery: Synchrone Ajax-aanvragen uitvoeren

Ik heb in het verleden wat jQuery gedaan, maar ik ben hier helemaal vast vast. Ik weet over de voor- en nadelen van het gebruik van synchrone AJAX-oproepen, maar hier is het vereist.

De externe pagina is geladen (gecontroleerd met Firebug), maar er wordt geen rendement weergegeven.

Wat moet ik anders doen om mijn functie goed te laten terugkeren?

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

Antwoord 1, Autoriteit 100%

Als u een synchroon verzoek maakt, moet dat

zijn

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

Voorbeeld – http://api.jQuery.com/jQuery.ajax/# Voorbeeld-3

Let op: Instellen Async-onroerend goed naar false is verouderd en in het proces van verwijderd (Link ). Veel browsers waaronder Firefox en Chrome zijn al begonnen met het afdrukken van een waarschuwing in de console als u dit gebruikt:

Chrome:

Synchrone XMLHTTPREQUEST OP DE HOOFDDRAAD wordt verouderd vanwege zijn nadelige effecten op de ervaring van de eindgebruiker. Voor meer hulp, controleer https://xhr.spec.whatwg.org/ .

Firefox:

Synchroon XMLHttpRequest op de hoofdthread wordt afgeraden vanwege de nadelige effecten op de ervaring van de eindgebruiker. Voor meer hulp http://xhr.spec.whatwg.org/


Antwoord 2, autoriteit 11%

Je gebruikt de ajax-functie verkeerd. Omdat het synchroon is, retourneert het de gegevens als volgt inline:

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

Antwoord 3, autoriteit 5%

hoe ver is die url? is het van hetzelfde domein? de code ziet er goed uit

probeer dit

$.ajaxSetup({async:false});
$.get(remote_url, function(data) { remote = data; });
// or
remote = $.get(remote_url).responseText;

Antwoord 4

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;
        }
    });
}

Other episodes