php - 通过 php 执行警报功能时 Javascript 错误

标签 php javascript

我在我的一个应用程序中使用融合贴图。

在一个示例中,我必须将值从一个 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/

相关文章:

php - 从数组中删除重复值

php - 包含 IF 语句的查询

javascript - 如何从 webGL 上下文 readPixels() API 中仅读取单个 channel (R 组件)?

javascript - AppCache 事件延迟触发 - WebkIt(Chrome 和 Safari)

javascript - ASP.NET ImageButton onclick javascript 未触发

php - 使用查询获取id

php - 基于付款方式的 WooCommerce 订单接收重定向

php - 在 PHP 中按子数组的值对数组进行排序

javascript - 在 li 中显示和隐藏 div

javascript - A* 算法返回启发式值 (JavaScript)