J'ai fait quelques jQuery dans 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, ce sera nécessaire.
La page distante est chargée (contrôlée avec firebug), mais aucun retour n'est affiché.
Que dois-je faire de différent 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;
}
ajax
jquery
synchronous
Industriel
la source
la source
seems that the statement "[synchronous] will be required" indicates a lack of understanding of JavaScript engines, thus a poorly architected app.
Ou une très bonne compréhension: si vous voulez faire un appel AJAXonbeforeunload
, utiliser une requête synchrone est en fait la méthode recommandée (car la fenêtre du navigateur aurait disparu avant que la requête ne soit renvoyée). D'une manière ou d'une autre, il dit clairement: «Je connais les avantages et les inconvénients de l'utilisation d'appels ajax synchrones» ... Peut-être le croyez-vous?Réponses:
Lorsque vous faites une demande synchrone, cela devrait être
Exemple - http://api.jquery.com/jQuery.ajax/#example-3
REMARQUE: la définition de la propriété async sur false est obsolète et est en cours de suppression ( lien ). De nombreux navigateurs, y compris Firefox et Chrome, ont déjà commencé à imprimer un avertissement dans la console si vous utilisez ceci:
Chrome:
Firefox:
la source
responseText
renvoie toujours une chaîne. Si vous attendez JSON, encapsulez$.ajax
avecJSON.parse
.<i>
et aussi<b>
. Ma recommandation: continuez à utiliser ces fonctionnalités pour qu'elles ne disparaissent pas.Vous n'utilisez pas correctement la fonction ajax. Comme il est synchrone, il retournera les données en ligne comme ceci:
la source
quelle est la distance de cette URL? est-ce du même domaine? le code semble correct
essaye ça
la source
remote_url
est défini correctement et l'appel AJAX est correctement exécuté comme mentionné (contrôlé avec firebug). Pas de retour!la source