在读取csv文件并在js中发出警报时,参数列表之后的SyntaxError:missing)

时间:2014-07-15 07:16:14

标签: java javascript jquery jsp

在阅读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岁,女性

错误: Error in firebug

页面渲染:

render

1 个答案:

答案 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 %>";