JavaScript报错--未结束的字符串常量

今天在js中处理一个后台request传的值时,本来为了图省事,直接在js中使用EL表达式,一个成功了,另一个却老是报错:“未结束的字符串常量”!!!

最后发现,原来那个报错的EL表达式中传过去的值中有个中文的句号,导致了老是换行.........

function initpage(){

 var str1 = "${periodTypeValue}";

 var str2 = "${premiumValue}";

 if(str1 != "" ||str2 != ""){

     document.getElementById("showDesc").style.display = "";

     document.getElementById("periodDesc").innerHTML = str1;

     document.getElementById("premiumDesc").innerHTML = str2;

 }

}


<body onload="initpage();">

     <html:form action="/product?method=saveEpolicy" method="post" >

          <table width="90%" height="50%" border="0" cellpadding="0"  class="CContent" cellspacing="0" align="center">

             <col width="20%">

             <col width="35%">

             <col width="15%">

             <col width="30%">

               .........

               <tr style="display: none;" id="showDesc">

                <td>

                       &nbsp;&nbsp;

                </td>

                <td style="text-align: left; vertical-align: top;" ><!-- align="left" valign="top"  两种方式左、上对齐 -->

                      <div id="periodDesc">

                      </div>

                </td>

                <td>

                    &nbsp;&nbsp;

               </td>

               <td style="text-align: left; vertical-align: top;" >

                    <div id="premiumDesc">

                   </div>

              </td>

            </tr>

          </table>

</html:form>

</body>

=============================================

最后经查资料,发现其他网友也有遇到过,是有隐藏域的形式解决的,即:不直接将该数据以参数形式传递,而是先将其赋值在一个隐藏的文本内,需要调用的函数里只需读取该文本里的内容即可.


<html:hidden property="premiumValue" styleId="premiumValue" value="${premiumValue}"/>

<html:hidden property="periodTypeValue" styleId="periodTypeValue" value="${periodTypeValue}"/>


意外发现后台Action中传过来一个null值是,这样显示的竟不是null,而是“”


var str1 = document.getElementById("periodTypeValue").value;

 var str2 = document.getElementById("premiumValue").value;



----------------

1.JAVASCRIPT引用时,使用的字符语言不一致. 

比如:<script type=”text/javascript” src=”xxx.js” charset=”UTF-8″>.xxx.js文件内部使用的是GB2312的格式,外面调用使用的是UTF-8,所以文件内部部分特殊字符因为格式不一致,出现乱码,造成此原因.


2.JAVASCRIPT输出HTML字符时,前后标记不匹配. 

这种比较常见,往往在输出字符串时,出现单引号(')或双引号(”)不配对,或者是在document.write()的时候,没有正确输出单引号(')或双引号(”)


3.参数内出现HTML标记语言或包含换行符 

我今天所遇到的是这种情况.因为我所得到的数据以参数形式传给一函数,结果该数据里包含换行符,造成了此错误. 

如:一般测试时只使用单行的数据,是正常的,未出现这个错误,. 

当测试时使用多行数据,并使用回车链换行,就出行了此错误.因为里面包含了换行符


对于第3种情况,我的解决方法是:不直接将该数据以参数形式传递,而是先将其赋值在一个隐藏的文本内,需要调用的函数里只需读取该文本里的内容即可. 


猜你喜欢

转载自blog.51cto.com/14028890/2400272