De la charge .fichier txt à l'aide de JQuery ou Ajax
Comment puis-je corriger le script ci-dessous afin qu'il fonctionne à CHAQUE FOIS! Parfois ça marche et parfois ça ne marche pas. Pro JQuery explique quelles sont les causes de cette, mais il ne parle pas de comment résoudre le problème. Je suis presque certain qu'il a à faire avec l'ajax état prêt, mais je n'ai aucune idée de comment l'écrire. Le web à propos de 99 façons différentes d'écrire ajax et JQuery, c'est un peu écrasante.
Mon but est de créer un HTML shell qui peut être rempli avec du texte à partir du serveur de fichiers de texte. Par exemple: disons qu'il s'agit d'un fichier texte sur le serveur nommé AG et son contenu est PF: PF-01, PF-02, PF-03, etc.. je veux tirer de cette information et de remplir le DOM HTML avant qu'il est vu par l'utilisateur. A @#!#$*& or avec PHP, puis a découvert mon hôte a fopen() couper. Alors je suis ici.
Merci pour votre aide.
JS - plantSeed.js
var pageExecute = {
fileContents:"Null",
pagePrefix:"Null",
slides:"Null",
init:function () {
$.ajax({
url: "./seeds/Ag.txt",
success: function (data){
pageExecute.fileContents = data;
}
});
}
};
HTML - TÊTE
<script type="text/javascript">
pageExecute.init();
</script>
HTML - CORPS
<script type="text/javascript"> alert(pageExecute.fileContents); </script>
- Les erreurs viennent? Avez-vous assurez-vous d'inclure l' .fichier js avant
pageExecute.init();
. Aussi, ne comptez pas sur AJAX pour charger du contenu, de l'utilisation côté serveur aussi, si le JS est désactivé. - Pas d'erreurs à tous, ça marche parfois. Je pense que cela a à voir avec la façon dont rapidement le chargement de la page, parfois de l'appel ajax est assez rapide pour battre le chargement du DOM, parfois il ne l'est pas. J'ai besoin de trouver un moyen d'arrêter les dom à partir de chargement avant que le contenu est chargé.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
pageExecute.fileContents
avant de l'AJAXsuccess
rappel fini de charger.async: false
rend le navigateur à attendre pour le rappel. Content que ça fonctionne.Essayez ceci:
HTML:
JavaScript:
Dans mon exemple, la div sera remplie avec le contenu du fichier. Jetez un oeil à jQuery
.load()
fonction.La "pathToYourFile" peut être une ressource qui contient les données que vous souhaitez charger. Jetez un oeil à la méthode load de la documentation pour plus d'informations sur la façon de l'utiliser.
Edit: d'Autres exemples pour obtenir la valeur de manipuler les
À l'aide de
$.get()
function:À l'aide de
$.ajax()
function:Il est important de noter que:
Est la même chose que:
Et, normalement, vous avez besoin pour utiliser cette syntaxe, puisque vous voulez que le DOM est prêt à exécuter votre code JavaScript.
Je recommande de ne pas utiliser
url: "./seeds/Ag.txt",
, de cibler directement un fichier. Au lieu de cela, utiliser un serveur de script côté homoserine llike PHP pour ouvrir le fichier et renvoyer les données, soit dans le plan au format ou au format JSON.Vous pouvez trouver un tutoriel pour ouvrir les fichiers ici: http://www.tizag.com/phpT/fileread.php
Voici le problème:
Vous avez une balise script dans le corps, qui est de demander de l'AJAX de données.
Même si vous étiez en lui demandant d'écrire les données de votre coquille, et pas seulement le bec elle...
...c'est votre problème #1.
Voici pourquoi:
AJAX est asynchrone.
Ok, nous savons déjà, mais qu'est-ce que cela signifie?
Eh bien, cela signifie qu'il va aller sur le serveur et demander le fichier.
Le serveur va aller à la recherche, et l'envoyer de nouveau. Ensuite, votre ordinateur va télécharger le contenu. Lorsque le contenu est 100% téléchargés, ils seront disponibles à l'utilisation.
...c'est...
Votre programme n'attend pas que cela se produise.
Il dit au serveur de prendre son temps, et en attendant, il va continuer à faire ce qu'il fait, et il ne va pas réfléchir à nouveau le contenu, jusqu'à ce qu'il reçoit un appel du serveur.
Bien, les navigateurs sont vraiment foutu rapide quand il s'agit de rendu HTML.
Les serveurs sont vraiment foutu rapide à servir statique (texte brut/img/css/js fichiers, trop.
Alors maintenant, vous êtes dans une course.
Qui arrivera le premier?
Le serveur d'appel de retour avec le texte, ou le navigateur de frapper la balise script qui demande le contenu du fichier?
Selon ce que l'on gagne sur que l'actualisation est celui qui va arriver.
Alors, comment obtenez-vous autour de qui?
Les rappels.
Rappels sont une manière de penser différente.
En JavaScript, vous effectuer un rappel par la remise de l'appel AJAX en fonction de l'utilisation, lorsque le téléchargement est terminé.
Ce serait comme appeler quelqu'un à partir d'un travail en ligne, et en disant: cadran de CETTE extension pour m'atteindre, quand vous avez une réponse pour moi.
En jQuery, vous allez utiliser un paramètre appelé "succès" à l'appel AJAX.
Faire
success : function (data) { doSomething(data); }
une partie de l'objet que vous êtes de passage dans l'appel AJAX.Lorsque le fichier se télécharge, dès qu'il télécharge, jQuery va transmettre les résultats dans la réussite de la fonction que vous lui avez donné, qui fera tout ce qui est à faire, ou appeler les fonctions qu'elle a été faite à l'appel.
Lui donner un essai. C'est sûr qu'il bat la course, pour voir qui télécharge d'abord.