2014-09-21 1 views
0

J'utilise a jQuery plugin to highlight certains mots à l'intérieur d'un div.Remplissez une requête jQuery avec les mots du fichier externe

J'ai réussi à le faire fonctionner, pas de problème. Ma question est: comment remplir la liste de mots à mettre en évidence avec des mots d'un fichier?

J'ai donc cette ligne de code: $('.textsection').highlight(["lorem", "non", "lectus"]); qui va surligner "lorem", "non" et "lectus" dans le texte de la page. Ça fonctionne bien. Au lieu de remplir les mots dans la requête, un par un, parce que j'en ai des centaines, je voudrais dire à jQuery d'aller prendre la liste des mots dans un fichier .txt où chaque mot est sur un ligne, comme:

lorem 
non 
lectus 

Fondamentalement, le résultat que je cherche quelque chose comme $('body').highlight(["wordslist.txt"]); (qui fonctionne évidemment pas, mais vous l'obtenez).

Comment puis-je faire cela? Comment donner correctement le fichier .txt à analyser à jQuery?

Merci :)

PS: Je suis en train d'ajouter « Salut », mais ne fonctionne pas :(

+0

utilisent un fichier js au lieu d'un fichier txt. – dandavis

+0

'$ ('body'). Highlight ([wordslist.js]);' fonctionnerait? – Orphal

Répondre

0

Probablement la meilleure façon serait de coder les mots dans un fichier en utilisant JSON puis utiliser $.getJSON() pour la saisir à partir du serveur. Bien sûr, puisqu'il est Javascript, à l'intérieur d'un fichier texte est préféré faire de manière asynchrone.

Par exemple, supposons que vous avez ["lorem", "non", "lectus"] appelé data.json. vous chargeriez comme ceci:

$.getJSON("data.json", function(data) { 
    $('.textsection').highlight(data); 
}); 
+0

Événement en essayant dans un environnement PHP avec WAMP, cela ne fonctionne pas. Je l'ai essayé aussi bien à l'intérieur qu'à l'extérieur d'un '$ (document) .ready (function()' Ai-je manqué quelque chose? Je ne suis absolument pas confiant avec JSON, je ne sais rien :) – Orphal

+0

Est-ce que votre fichier data.json est correct? annuaire? Il devrait être dans le même répertoire que le fichier .html. Vérifiez la console Javascript et voyez s'il y a des erreurs là-bas. – fstanis

+0

Eh bien c'est un fichier .php, mais oui, c'est dans le même répertoire. Je travaille sur localhost, si c'est important. Vous dites "encoder en JSON", que voulez-vous dire exactement? Lister chaque mot sur une ligne séparée suffit-il, ou data.json doit contenir du code? Si un code est requis, comment puis-je faire cela? – Orphal

0

Vous pouvez utiliser ceci:

$.get("wordslist.txt", function(data) { 
    var arr= data.split("\n"); 
    $('body').highlight(arr); 
}); 
+0

C'est proche du travail, mais ce n'est pas le cas. Quand je fais un document.write() pour voir ce que 'data.split (" \ n ")' renvoie, c'est quelque chose comme: 'lorem, non, lectus' où il doit retourner' "lorem", "non", " lectus "' (avec des doubles guillemets autour de chaque mot) – Orphal

+0

En fait, même en raccourcissant considérablement la liste des mots à tester, cela ne fonctionne pas. Dans la liste de motstxt Je finis avec '[" lorem "," non "," lectus "]' directement écrit comme ceci dans le fichier, avec '$ .get (" badwords.txt ", fonction (data) {$ ('body') .highlight (données);}); 'en tant que code, cela ne fonctionne pas. – Orphal

Questions connexes