2011-02-15 24 views
0

從我的代碼後面我傳遞這對客戶端腳本如何在JavaScript

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 
+2

難道這就是[同樣的問題之前(http://stackoverflow.com/questions/4997634/how-to-escape-逗號在JavaScript的)? – user113716 2011-02-15 02:30:20

回答

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("'", "\\'"))); 
2

很難從你的問題告訴,但聽起來好像正在返回的包括單引號字符值(撇號)這將結束您的字符串在生成的JavaScript。

正在爲拋出錯誤的行生成的代碼是什麼?

當類似的事情發生在我身上這導致類似:

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

這將導致因爲值Mc'Adams的錯誤。如果是這種情況,那麼你將不得不通過一種方法來發送你的數據,這些方法會跳過那些會破壞你的javascript的值。

1

你已經使用了混合的單引號和雙引號。在這裏改變行;

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

沒有幫助....... – 2011-02-15 14:12:02