使用Ajax,我将数据发布到php文件中,在该文件中,我使用下面的代码循环。
我的部分代码无法正确格式化onclick事件:
$result .= '<a href="#" onclick="$("#element").dialog("open");" ></a>';
我试图用反斜杠转义双引号,但是没有运气。使用反斜杠,在控制台中,我看到:以某种方式从不出现“ =”的地方,也打印了所有反斜杠。代码不起作用。
有人可以帮我弄清楚我在语法上的错误吗?谢谢。
答案 0 :(得分:1)
在解析HTML时,浏览器将读取UIKit
部分,并推断该属性UITableView
等于onclick="$("#element"
,因为它认为找到了双引号。因此,您需要在onclick
之后转义双引号字符。由于您使用的是"$("
(我想强调此处使用的单引号),因此您就是unable to escape的单引号字符串中的双引号字符。因此,您将需要以下内容:
$(
现在,在渲染时php将$result .= 'some_string'
转换为
$result .= '<a href="#" onclick="$(\'#element\').dialog(\'open\');" ></a>';
,所以字符串的最终输出将是
\'
我希望这会有所帮助。
答案 1 :(得分:1)
您的字符串中有双引号,然后是内容再次用双引号引起来。第二个引号应为单引号,但这将终止字符串。因此,您将不得不逃脱它们。
所需的html代码应如下所示:
<a href="#" onclick="$('#element').dialog('open');"></a>
要实现此目的,您将必须将PHP代码更改为例如以下:
$result .= '<a href="#" onclick="$(\'#element\').dialog(\'open\');"></a>';
答案 2 :(得分:-2)
双引号应转义
$result .= '<a href="#" onclick="$(\"#element\").dialog(\"open\");" ></a>';
另一种方法是
$result .= `<a href="#" onclick="$('#element').dialog('open');" ></a>`;
答案 3 :(得分:-2)
如果使用双引号定义html属性,则不能(按原样)在属性本身中使用它,而必须对其进行编码。
$result .= '<a href="#" onclick="'.htmlspecialchars('$("#element").dialog("open");').'" ></a>';