2013-07-06 81 views
0

首先:我知道有相同的標題或類似的文章/問題hundres或這個,但讓我解釋我想達到什麼,什麼是我的問題在這裏未捕獲的SyntaxError:意外的令牌非法的多個字符串

我有一個Markdown編輯器,我將存儲用戶的內容,如果他們希望他們可以稍後編輯該內容。

因此,在我的情況下,我使用elasticsearch來存儲所有用戶的內容。

存儲信息對我來說根本不是問題,但必須檢索它並重新顯示是一個巨大的問題,現在我試圖解決這個問題好幾個小時。


通過此降價編輯器,用戶可以無限制進入一點事都沒有,我不知道這是否是我的降價編輯如何處理所有這些東西不正確的方式,但新行是一個巨大的問題在這裏。

如果用戶輸入這樣的事情

#Hello World 

#Here you see I have two extra lines 

#How about a video element here as well? 


<iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe> 

#Damn cool!! 

明顯存儲沒有問題,但有重新顯示在editor

我得到這個錯誤時。

Uncaught SyntaxError: Unexpected token ILLEGAL 

幸運我可以修復使用,從我的問題,我以前在這裏問什麼這個問題,但固定的另一個問題一個問題時。

的解決問題的辦法是做這樣的事情

var your_content = ' #Hello World 

    #Here you see I have two extra lines 

    #How about a video element here as well? 


    <iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe> 

    #Damn cool!! 
'; 
var replaced_text = your_content.replace(/\n|\s/g, ""); 

但是與上述解決方案都將只是顯示是這樣的:

#Hello World #Here you see I have two extra lines #How about a video element here as well? <iframe width="420" height="315" src="//www.youtube.com/embed/Uogdn7zWDmY" frameborder="0" allowfullscreen></iframe> #Damn cool! 

所以,代碼的格式真搞砸了,這是另一個問題,因爲用戶顯然希望能夠編輯他們的代碼和一個很好的格式。

我使用這個編輯器降價http://dillinger.io

我的服務器是:的NodeJS,所以我用一切的JavaScript

UPDATE

這是剪斷代碼:

var editor 
    , converter 
    , autoInterval 
    , paperImgPath = '/img/notebook_paper_200x200.gif' 
    , profile = 
     { 
     theme: 'ace/theme/idle_fingers' 
     , showPaper: false 
     , currentMd: '{{contentMd}}' <---- this is the problem 
     , autosave: 
     { 
      enabled: true 
     , interval: 3000 // might be too aggressive; don't want to block UI for large saves. 
     } 
     , current_filename : 'Filename' 
     } 

而且我存儲{{contentMd}}的位置並不重要,但我仍然得到該錯誤。如果我像這樣存儲它們

var abcd ='{{contentMd}}';

所以contentMd它是從服務器傳遞的東西,它包含我發佈在頂部的所有內容。

+0

哪裏是造成異常的JS代碼?將字符串存儲在一個變量中不應該導致語法錯誤,除非你正在構造一個JS對象並調用eval或其他東西... – tjameson

+0

@tjameson要在一秒內更新一段代碼。 – Ali

+0

@tjameson我已更新我的問題; – Ali

回答

2

我覺得這是發生了什麼:

> var s = 'long string 
with carriage return'; 
SyntaxError: Unexpected token ILLEGAL 

這是來自Chrome的控制檯窗口。

嘗試粘貼字符串轉換成JavaScript之前'\n'更換服務器上的所有\n字符:

> var s = 'long string\nwith carriage return'; 
undefined 
> s 
"long string 
with carriage return" 
+0

我做了,但格式搞亂了,正如我所說:( – Ali

+0

我不相信你在說什麼。:)你的'replaced_text'已經刪除了所有的'\ n'和'\ s'。當然格式遭受了。我建議,不要刪除'\ n',而是用文字'\ n''替換它們。 – akonsu

+1

like'var contentMd = your_content.replace(/ \ n/g,'\\ n');' – akonsu

相關問題