Comment charger un script d'un autre répertoire de manière synchrone via un appel ajax?
J'ai souvent besoin de charger d'autres fichiers javascript via ajax, donc au début j'ai utilisé la norme de la fonction jQuery fournit pour le script de chargement:
$.getScript('script_name.js',callback_function());
Mais cela n'a pas fonctionné, puisque $.getScript est asynchrone (l'API jQuery $.ajax dit "asynchrone" est à true par défaut; ce sujet est abordé dans les commentaires de l'API de $.getScript: http://api.jquery.com/jQuery.getScript/). J'ai donc écrit cette fonction, comme prévu par quelqu'un dans les commentaires de l'API page liée ci-dessus:
load:function(script,callback){
jQuery.ajax({
async:false,
type:'GET',
url:script,
data:null,
success:callback,
dataType:'script'
});
},
Cela semble bien fonctionner, j'y suis donc allé, mais j'ai récemment remarqué que cela ne fonctionne que pour les scripts dans le même répertoire, par exemple. l'appel de myObj.load('test.js') fonctionne bien, mais en l'appelant myObj.load('test/test.js') ne fonctionne pas du tout.
Il se sent comme je suis absent quelque chose d'évident, mais je n'ai pas réussi à trouver le problème. Une idée?
source d'informationauteur Alex
Vous devez vous connecter pour publier un commentaire.
Mise à jour: Voir le commentaire de flux ci-dessous, ça n'a rien à faire avec jQuery, c'est un problème d'autorisations de fichier sur le serveur.
Réponse originale à cette question:
Ne vous obtenez des erreurs à partir du navigateur? Par exemple, en Chrome ou Safari, si vous ouvrez les Outils de Dev et de regarder l'onglet Console, fait-il des erreurs? Ou dans Firefox, installer Firebug et check-in de la console de Firebug. Ou c'est à dire, utiliser la version gratuite de VS.Net... il faut faire quelque Chose se plaindre à vous au sujet de quelque chose.
Vous pouvez également obtenir plus d'informations à partir de votre code lui-même en fournissant une
error
fonction plutôt que de supposer succès:Mise à jour: Vous avez dit que vous voir
textStatus
= "erreur" eterrorThrown
= undefined. Très étrange. Le même script fonctionne si vous le déplacez donc pas sur un subpath? Je me demande si le subpath est un leurre, et le vrai problème est une erreur de syntaxe dans le script.Hors-sujet: Est-il vraiment être synchrone? Vous ne pouvez pas simplement sondage pour un symbole? C'est juste que synchrone requêtes ajax vraiment trash de l'expérience de l'utilisateur. Dans la plupart des navigateurs, et pas seulement votre propre page, mais tous pages de lock-up lors de la demande.
Voici ce que je veux dire par interrogation: Supposons que j'ai voulu charger jQuery de manière asynchrone à partir de JavaScript:
Utilisation:
Vous pouvez définir des appels ajax synchrone par défaut à l'aide de ajaxSetup. C'est à quoi il ressemble:
Si vous avez besoin des appels asynchrones de nouveau, juste de l'activer avec: