在阅读csv文件时获取错误:missing ) after argument list
但是当我用于在javascript中提醒或将其分配给javascript中的任何变量时。
<script>
<%
String csv = "";
try {
BufferedReader reader = new BufferedReader(new FileReader("c:/Testing.csv"));
String text = "";
while ((text = reader.readLine()) != null) {
csv = csv + text;
}
}
catch(Exception e) {}
%>
alert("<%= csv %>");
var test = "<%= csv %>";
</script>
输出:
名称,党,省,年龄,性别
&#34; Mourani,Maria&#34;,BlocQuebecois,Quebec,43,Female
&#34; Sellah,Djaouida&#34;,NDP,魁北克,30岁,女性
&#34; St-Denis,Lise&#34;,NDP,Quebec,72,Female
&#34; Fry,Hedy&#34;,Liberal,BritishColumbia,71岁,女性
&#34; Turmel,Nycole&#34;,NDP,Quebec,70,Female
&#34; Sgro,Judy&#34;,Liberal,Ontario,68,Female
&#34; Raynault,Francine&#34;,NDP,Quebec,67,Female
&#34; Davidson,Patricia&#34;,保守党,安大略省,66岁,女性
错误:
页面渲染:
答案 0 :(得分:1)
您的代码最终将呈现为
alert(some text,
some more text,
and more);
var test = some text,
some more text,
and more;
如果文本没有用引号括起来,则无效。即使你用引号包装它,javascript也不支持多行字符串(除非在末尾转义)。
因此,您需要转义反斜杠,以便保留新行,然后在js字符串中进行解析。并将输出用引号括起来。
//...
csv = csv + text +"\\n";
//...
alert("<%= csv %>");
var test = "<%= csv %>";
由于你的csv文件也包含双引号,你可以做两件事之一
用单引号包裹
alert('<%= csv %>');
var test = '<%= csv %>';
但是csv文件中也可能有单引号并且会触发相同的错误,所以另外要做的就是在输出之前转义csv文件中的双引号
<% csv.replace("\"","\\"");
alert("<%= csv %>");
var test = "<%= csv %>";