【问题标题】:Javascript string formattingJavascript 字符串格式化
【发布时间】:2014-06-23 13:16:14
【问题描述】:

在我的 C# web 应用程序中,我必须通过单击服务器端按钮代码将下面的 html 字符串传递给客户端函数。我用的是火狐浏览器。

htmlString 是:

<div id='divPopUpToXyz.abc@def.com'>
  <table>
    <tr>
      <td>
        <img width='10' src='../images/cross.gif' onclick='deleteDiv(1,'ToXyz.abc@def.com','To')>
       </td>
       <td>
         Xyz.abc@def.com
       </td> 
     </tr>
   </table>
 </div>

在服务器端,我使用它来调用所需的 JS 函数:

Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "returnValue('" + htmlString+ "');", true);

但我收到这样的错误:

“参数列表后缺少 )”

我通过firebug检查,发现htmlstring像这样被扭曲:

<div id='divPopUpToXyz.abc@def.com'>
  <table>
    <tbody>
      <tr>
        <td>
          <img src="../images/cross.gif" onclick="deleteDiv(1,"     toXyz.abc@def.com','to')="" width="10">
        </td>
        <td>
          Xyz.abc@def.com
        </td>
      </tr>
   </tbody> 
 </table>
 </div>

我不明白为什么会这样变化。

请提出一些出路。

【问题讨论】:

  • 您的 htmlString 包括单引号内的单引号(查看您的 onclick 处理程序,其中之一)。然后,您将其包含在 returnValue() 中,并用 more 单引号括起来。浏览器正在尽可能多地理解这一切。获取htmlString 的内容自行正确引用,然后使用HttpUtility.JavaScriptStringEncode 准备将其包含在returnValue() 调用中
  • 初始化 htmlString 的代码在哪里(您发布的不是有效字符串)
  • 您可能想在某处添加 html 内容?

标签: c# javascript


【解决方案1】:

你没有传递你期望传递的值

onclick='deleteDiv(1,'ToXyz.abc@def.com','To'

被解释为两个属性

onclick='deleteDiv(1,'
ToXyz.abc@def.com','To'=""

因为第一个'后面的1,是终止onclick属性赋值

将 htmlString 赋值改为

var htmlString = HttpUtility.JavaScriptStringEncode(@"<div id='divPopUpToXyz.abc@def.com'><table><tr><td><img width='10' src='../images 
/cross.gif' onclick='deleteDiv(1,""ToXyz.abc@def.com"",""To"")'>   
 </td><td>Xyz.abc@def.com</td> 
 </tr></table></div>");

你应该很高兴

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2014-01-17
    • 1970-01-01
    • 2015-04-01
    • 2015-08-23
    相关资源
    最近更新 更多