如何在javascript中处理'&','(',')'

时间:2011-02-15 02:26:40

标签: javascript asp.net

从我的代码背后我将它传递给客户端脚本

C#代码隐藏 * 请注意,如果我评论下面的行而不是我没有得到js错误 *

 if (btnDelete != null)
 {   
   btnDelete.Attributes["onclick"] = String.Format("return DeleteRow('{0}', '{1}', '{2}', '{3}');", e.Row.ClientID, e.Row.RowIndex, DataBinder.Eval(e.Row.DataItem, "Id"), DataBinder.Eval(e.Row.DataItem, "Name"));
}

//javascript
function DeleteRow(rowId, rowIdx, Id, Name) {    
    var result = confirm('Are you sure you want to delete this record? \n\n Id: ' + Id + "\n Name: " + Name);

  if (!result)
       HighlightRow(rowId, rowIdx % 2 ? "#DEEEE9" : "#FFFFFF");
   return result;
}

错误消息:

Message: Unterminated string constant
Line: 1280
Char: 180
Code: 0
URI: http://localhost:4964/admin/default.aspx


Message: Unterminated string constant
Line: 1341
Char: 178
Code: 0
URI: http://localhost:4964/default.aspx


Message: Expected ')'
Line: 1401
Char: 152
Code: 0
URI: http://localhost:4964/default.aspx

3 个答案:

答案 0 :(得分:2)

很难从你的问题中看出来,但听起来像返回的值包括单引号字符(撇号),它会在生成的javascript中结束你的字符串。

为引发错误的行生成的代码是什么?

当我遇到类似的事情时,它会产生类似的结果:

return DeleteRow('1', '2', 'abscde', 'Mc'Adams');

由于Mc'Adams的价值,会导致错误。如果是这种情况,那么您将不得不通过一种方法发送您的数据,该方法会转义会破坏您的javascript的值。

答案 1 :(得分:1)

您使用过混合单引号和双引号。在这里改变一行;

var result = confirm('Are you sure you want to delete this record? \n\n Id: ' + Id + '\n Name: ' + Name)

答案 2 :(得分:0)

这是我如何修复它:

btnDelete.Attributes["onclick"] = String.Format("return DeleteRow('{0}', '{1}', '{2}', '{3}');", e.Row.ClientID, e.Row.RowIndex, DataBinder.Eval(e.Row.DataItem, "Id"), DataBinder.Eval(e.Row.DataItem, "Name").ToString().Trim().Replace("'", "\\'")));