【问题标题】:escaping quotes issue转义引号问题
【发布时间】:2012-05-08 09:19:20
【问题描述】:

在 PHP 中,我创建了这个对象,并将其转换为 JSON 并发送到 JS 客户端:

$arr = array("img"=>"http://www.myDomain.com/imgs/pic_1.jpg","data"=>"<p>This is a paragraph <a href='#' onclick='MyFunction('myParameter');'>My Link</a></p>");

我认为我在使用引号时做错了(检查函数调用),但目前,一旦注入我的 HTML,MyFunction 就永远不会被调用。在这种情况下,哪种是转义引号的正确方法?

编辑:这是生成的 JSON:

{"img":"http:\/\/www.myDomain.com\/imgs\/pic_1.jpg","data":"<p>Paragraph: <a href='#' onclick='localFunction('parameter');'>Link<\/a><\/p>","length":2}

【问题讨论】:

  • 生成的 JS 长什么样?你用这些数据做什么?
  • 什么对象?这是一个数组。您还省略了最相关的一段代码:JSON 转换。更不用说 JSON 不是 JavaScript:它不能包含代码。
  • @DonCallisto:这毫无意义,也是错误的。
  • @ÁlvaroG.Vicario:如果我们假设他使用的是内置的 JSON 转换工具,那么这不是问题。这也不是问题,因为问题在她确实给出的代码中很明显。
  • @Len - 你是对的。该问题与 PHP 和 JSON 均无关。

标签: javascript quotes


【解决方案1】:
<a href='#' onclick='MyFunction('myParameter');'>

“onclick”中有单引号,但“onclick”本身用单引号分隔。

试试:

$arr = array("img"=>"http://www.myDomain.com/imgs/pic_1.jpg","data"=>"<p>This is a paragraph <a href='#' onclick=\"MyFunction('myParameter');\">My Link</a></p>");

【讨论】:

    【解决方案2】:

    onclick='MyFunction('myParameter');' 中的引号嵌套错误。改用转义双引号:

    onclick=\"MyFunction('myParameter');\"
    

    【讨论】:

      【解决方案3】:

      您对 JSON 的提及是在转移注意力。

      查看代码。我已经标记了属性值的开始和结束:

       onclick='MyFunction('myParameter');'>
               ^           ^
      

      您要么需要使用不同的引号,因此必须将其转义,因为它们位于由该类型引号分隔的 PHP 字符串中:

       onclick='MyFunction(\"myParameter\");'>
      

      ……或者你需要使用 HTML 实体:

       onclick='MyFunction(&quot;myParameter&quot;);'>
      

      一般来说,您应该完全避免内在的事件属性,而改用 JavaScript 事件绑定(通常使用事件委托,因此您无需在每次向 DOM 添加新元素时都绑定事件)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        • 2013-07-07
        • 1970-01-01
        • 2023-01-12
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多