2009-09-26 9 views
0

J'ai un problème confus.javascript showdown, démarque pas parsing correctement

J'ai deux fichiers, les deux qui exécutent l'abattage. Cependant, il semble qu'un seul fichier analyse correctement.

Voici l'affaire.

File 1 est exécuté via PHP et AJAX.

File 2 est saisi par une requête AJAX. Le fichier qui traite la requête ajax contient ce code.

Voici le ajax

Comme vous pouvez le voir, le code jQuery qui met les détails sur l'écran sont exactement les mêmes à part les variables et la chaîne JSON au lieu d'une chaîne directe à partir de la base de données.

fichier maintenant # 1 ne pas analyser le démarquage correctement, où deux fichiers ne ...

Voici une capture d'écran de fichiers # 1 et # 2

fichier # 1

file one not working http://i34.tinypic.com/x3cmpv.png

fichier # 2

file two working http://i36.tinypic.com/2py14l5.png

Une idée sur ce qui pourrait éventuellement causer cela? Aussi, des idées sur un correctif?

Répondre

0

Ok,

Il semble donc qu'il était l'analyse syntaxique des sauts de ligne dans le fichier ...Cependant, nous avons changé de
car cela est à l'origine de la question de l'analyse syntaxique de démarquage mal doubler par échappé

il lit maintenant

$copy = preg_replace("/\n/", "\\\\n", $js_r->copy); 
$copy = preg_replace("/\r/", "\\\\r", $copy); 

qui fonctionne correctement et analyse les fichiers de manière efficace

+1

Ok, heureux que cela a bien fonctionné. En passant, vous pouvez envisager d'utiliser str_replace au lieu de preg_replace car il est beaucoup plus rapide (non regex). –

+0

J'ai pris votre avis après que j'ai posté que ... je suis tout pour économiser des ressources ... merci de m'indiquer dans la bonne direction de toute façon! –

1

Peut-être est parce que dans le fichier que vous avez 2:

$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $result['copy']); 
    $copy = preg_replace('/[\r]+/', '$1<br />$2', $result['copy']); 

Ce qui ne tient pas compte de la première preg_replace(). Vous voulez:

$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $result['copy']); 
    $copy = preg_replace('/[\r]+/', '$1<br />$2', $copy); 

qui vous avez correctement mis en œuvre dans le fichier 1. Cela pourrait signifier que le fichier 1 de comportement est correct et le comportement de fichier 2 est en fait incorrecte, selon la façon dont vous regardez.

EDIT

Pour répondre à votre commentaire:

Remplacer (dans le fichier 1):

$copy = preg_replace('^(.*)\n(.*)^', '$1<br />$2', $js_r->copy); 
    $copy = preg_replace('/[\r]+/', '$1<br />$2', $copy); 

Avec

$copy = preg_replace('/[\r]+/', '$1<br />$2', $js_r->copy); 

Est-ce que obtenir l'effet désiré?

+0

ok, mais si je change cela dans le fichier 1 (qui est celui qui ne fonctionne pas) alors je ne vais pas obtenir l'effet désiré dans l'un ou l'autre? –

+0

Eh bien faire le contraire dans le fichier 1 puis, remplacer $ copy = preg_replace ('^ (. *) \ N (. *) ^', '$ 1
$ 2', $ js_r-> copier); $ copy = preg_replace ('/ [\ r] + /', '$ 1
$ 2', $ copy); avec $ copy = preg_replace ('/ [\ r] + /', '$ 1
$ 2', $ js_r-> copier); Je m'excuse pour le manque de formatage du code dans les commentaires. –

+0

cela pourrait fonctionner, mais comme dans une autre question je l'avais à l'origine, nous sommes arrivés à la conclusion que l'analyse de \ n est nécessaire, sinon il va casser mon javascript que j'ai. Je suis au bureau en ce moment alors quand je reviens je vais l'essayer et vous le faire savoir. –