2013-03-01 31 views
0

這是我的代碼:未終止的字符串錯誤,而迭代

<c:forEach items="${entry.value}" var="keyval"> 
var bdgroup= { 
    elem1: '${keyval.partno}', 
    elem2: '${keyval.location}', 
    elem3: '${keyval.village}', 
    elem4: '${keyval.id}' 
    }; 
    exampleArray.push(bdgroup); 
</c:forEach> 

我得到

「未結束的字符串常量error'`

有時它工作正常,但其他時候這種錯誤發生。

+0

馬克已經回答了這個問題,但我不喜歡你重新聲明bdgroup一遍又一遍。快速刪除的一種方法是:exampleArray.push({elem1:'expr',elem2:'expr',...});有了適當的空白區域,它應該同樣容易閱讀。 – Quaternion 2013-03-01 17:07:46

回答

2

當例如${keyval.id}得到擴展,如果中有一個單引號,然後JavaScript的樣子

elem1: 'what's up?' 

因此您的未終止的字符串錯誤。

將這些引號放入JSON之前先將其引出。

+0

正是我在控制檯中看到的..我試過這個..var villa ='$ {keyval.id}'。replace(/'/ g,「''」);但這也失敗..我可以逃脫它嗎? – sakar 2013-03-01 15:35:11

+0

@sakar你需要更換它在大括號內。我不確定你使用了什麼工具,但應該更像''{keyval.id.toEscapedString()}''。 – 2013-03-01 16:14:38

+0

這是不可能取代在JavaScript ..根據你的想法,我將其替換在服務器端.. – sakar 2013-03-04 12:11:48

0

看起來您正在使用taglib,並且單引號內的元素由頁面處理器生成。

我敢打賭,在失敗的時候,你的價值觀包含單引號。

轉義單引號,並應該解決它。

0

轉義單引號和任何其他特殊字符,以便正確採用值。

我是==>我是