我在我的一个应用程序中使用融合地图。
在其中一个示例中,我必须将值从一个地图传递到另一个地图,
我遇到一个问题,如果传递的数据是数字,它正确显示警告消息,但如果是字符串则会产生错误:
NM is not defined
的javascript:警报(NM)()
我的代码如下:
$strXML .= "<entity id='" . $rs1['Internal_Id'] . "' value='" . round((($rs1['datap'] / $sumdata) * 100),2) . "' link='javascript:alert(".($rs1['Internal_Id']) . ")' />";
如果我更改链接部分(在alert中传递单引号):
$strXML .= "<entity id='" . $rs1['Internal_Id'] . "' value='" . round((($rs1['datap'] / $sumdata) * 100),2) . "' link='javascript:alert('".($rs1['Internal_Id']) . "')' />";
显示无效的xml数据。
请帮我解决这个问题
由于
的Pankaj
答案 0 :(得分:1)
使用\"
而不是'
来围绕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中你必须写{{1} }
答案 1 :(得分:0)
你应该改变你的
ink='javascript:alert('".($rs1['Internal_Id']) . "')'
通过
ink='javascript:alert(\"".($rs1['Internal_Id']) . "\")'
答案 2 :(得分:0)
尝试:
$strXML .= "<entity id='" . $rs1['Internal_Id'] . "' value='" . round((($rs1['datap'] / $sumdata) * 100),2) . "' link='javascript:alert(\"".($rs1['Internal_Id']) . "\")' />";
基本上转义警告引号:)