Jquery append using multiline


0

J'ai travaillé sur un projet qui crée dynamiquement un fichier javascript en utilisant ASP.NET qui est appelé depuis un autre site.

Ce jquery fichier javascript ajoute un div et le remplit avec un segment HTML assez grand et pour le faire que je dois tourner le segment dans une chaîne comme ceci:

$(document).ready(function(){ 
var html = "Giving this magazine such a lofty epithet may seem a bit presumptuous, but for a non scientifically trained outsider this magazine offers a fresh and challenging look at the fast paced world of science that doesn't shy away from humor and the use of terms and ideas that may require its readers to go online and define a term. And in some cases it may inspire the reader to pick up a book on science by such greats as Hawking and Greene in order to better grasp some of the concepts dealing with time, space and atoms. This magazine isn't dumbed down. It includes well placed and efficient illustrations to help explain some of the more abstract points. It is not designed in the way popular magazinea are, in so much as they only touch upon a topic in the simplest manner and then move on before the audience is lost. Yet this magazine keeps the attention of the reader by combining explanatory notes that help people with no background knowledge have some grasp of the topic and by using humor and well written articles to clearly make their points. <br />For a magazine with a serious and well researched list of topics having small cartoons the likes of the New Yorker shows how comfortable this magazine is with itself. From the moment I picked up this magazine for the first time I felt like every word I read mattered and was worth my time to read. (Not true of many other magazines) American Scientist may not have the audience of Discover or National Geographic, nor is it as accessible as said titles, but for those with a true interest in science willing to challenge themselves and commit to real learning this magazine may be a perfect fit. At $4.95 it is certainly worth it to pick a copy on the news stand and try it out." 

$("#divname").append(html); 
}); 

Comme vous pouvez le voir Le segment sera assez volumineux et je n'ai aucun moyen de savoir quelle taille il est généré dynamiquement à partir de ma base de données en fonction du reviewID qui est défini par l'utilisateur dans sa requête.

Le code html à insérer dans le div est une liste de critiques et est généré en utilisant asp.net MVC par un répéteur qui boucle dans une liste. (Si cela vous donne une idée de ce que je fais).

Y a-t-il un moyen de transformer ce grand segment en une chaîne pouvant être insérée dans le script d'ajout?

Merci Vous

  0

Je pense que l'approche var html = "chaîne longue ici ..." devrait fonctionner, n'est-ce pas? 22 févr.. 092009-02-22 07:49:59

  0

Non, si la chaîne est générée en tant que html et qu'elle ne forme pas seulement une longue chaîne, elle crée de nouvelles lignes pour une raison quelconque. 22 févr.. 092009-02-22 08:50:10

1

domaine Cross jquery json
http://docs.jquery.com/Release:jQuery_1.2/Ajax#Cross-Domain_getJSON_.28using_JSONP.29

  0

désolé, ce n'est pas le plus frais des URLs ... http://docs.jquery.com/Ajax/jQuery.getJSON 22 févr.. 092009-02-22 09:00:04

  0

Merci, j'ai fini par faire une page d'affichage mvc qui a généré JSON, puis utilisé un tag de script pour appeler le JSON qui a ensuite été ajouté à un div.J'ai résolu la chose multline en remplaçant tout "\ n" par un espace, en coupant le code et en supprimant les espaces doubles. Merci beaucoup jayrdub. 23 févr.. 092009-02-23 08:13:41


0

-moi si je me trompe, mais je pense que tout entre le début et la fin des guillemets serait considéré comme faisant partie de cette chaîne, peu importe le nombre de lignes qu'il a. Sauf si votre chaîne a des guillemets en soi, dans ce cas, il vaudra mieux faire l'équivalent de php's addslashes() fonction dans ASP sur votre chaîne, qui devrait ajouter un \ avant toutes les marques " dans la chaîne.

Une autre idée peut être d'utiliser Json pour encoder/décoder la chaîne.


1

Quelques idées:

  • Vous pouvez remplacer de nouvelles lignes avec des espaces et créer une ligne énorme. Il ne devrait pas y avoir de problème avec ça.
  • Utiliser la concaténation de chaîne. Diviser les cordes et les lignes et faire:

    var html = line1 + + line2 ... linge;

  • Faire un appel Ajax pour remplir le div.

    $ ("# divname") charge (service_url);

Vous devez créer un service qui renverra la chaîne. À mon avis la 3ème option est meilleure que les autres.

  0

Je suis d'accord, la troisième option serait un très bon, mais il ne semble pas fonctionner dans le domaine croisé. Pouvez-vous l'obtenir pour travailler le domaine croisé pour vous? 22 févr.. 092009-02-22 08:14:47

  0

Vous pouvez utiliser jsonp en tant que dataType dans un appel $ .ajax pour charger des données à partir d'un domaine externe. Ce ne serait pas aussi simple que la charge. Pourquoi voulez-vous faire cela cependant? Pourquoi ne pas créer un proxy dans le même domaine que la page Web? 22 févr.. 092009-02-22 09:02:06


0

Je ne vois pas ce qui ne va pas en générant simplement une longue chaîne de caractères à une seule ligne et en l'ajoutant juste comme vous le faites. période. terminé. L'amateur ne va rien gagner.

  0

Cela ne me dérangerait pas de faire une très longue chaîne, mais le problème est, la page est générée dynamiquement et le code semble formater le HTML de telle sorte qu'il crée de multiples nouvelles lignes. 22 févr.. 092009-02-22 08:52:02


0

cacher ailleurs où sur la page et remplir la div avec quand vous en avez besoin?