我在我的一个应用程序中使用融合贴图。
在一个示例中,我必须将值从一个 map 传递到另一个图表,
如果传递的数据是数字,它会正确显示警报消息,但如果它是字符串,我会遇到一个问题:
NM is not defined
javascript:alert(NM)()
我的代码如下:
$strXML .= "<entity id='" . $rs1['Internal_Id'] . "' value='" . round((($rs1['datap'] / $sumdata) * 100),2) . "' link='javascript:alert(".($rs1['Internal_Id']) . ")' />";
如果我更改链接部分(在警报中传递单引号),即:
$strXML .= "<entity id='" . $rs1['Internal_Id'] . "' value='" . round((($rs1['datap'] / $sumdata) * 100),2) . "' link='javascript:alert('".($rs1['Internal_Id']) . "')' />";
它显示无效的 xml 数据。
请帮我解决这个问题
谢谢
潘卡杰
最佳答案
使用 \"
而不是 '
来包围 JavaScript 字符串。
$strXML .= "<entity id='" . $rs1['Internal_Id'] . "' value='" . round((($rs1['datap'] / $sumdata) * 100),2) . "' link='javascript:alert(\"".($rs1['Internal_Id']) . "\")' />";
所发生的情况是生成的 xml 如下所示:
<entity id='NM' value='1' link='javascript:alert('NM')'/>
正如您应该能够从 SO 语法突出显示中看到的那样,在 javascript:alert('
之后结束链接属性的值,因为您对 javascript 使用的引号与用于围绕属性值。
使用不同的引号("
而不是 '
)不会结束属性值(再次参见语法突出显示)
<entity id='NM' value='1' link='javascript:alert("NM")'/>
在 PHP 中,我们必须转义引号(使用 \
),这样 php 解释器就不会将其解释为特殊字符并用于结束字符串,这就是为什么在 php 中必须编写 \"
关于php - 通过 php 执行警报功能时 Javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1832899/