我有以下代码,其中我试图使用PHP从RSS源获取xml元素'point'的值。当我使用'echo'显示点的值时,它会给我正确的数据。但是,当我将相同的参数传递给javascript函数时,它会非常随机地调用该函数。 javascript函数中的警报给出了每次迭代中2或3个点值的总和。我该如何解决这个问题?
<!DOCTYPE html>
<html>
<head>
<title>Natural Disasters</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js? sensor=false&libraries=places"></script>
<script type="text/javascript">
var i=0;
function getPoint(point) {
alert("Value of i : "+i+" Value of point : "+point);
++i;
}
</script>
<script>
function showRSS(str) {
if (str.length === 0) {
document.getElementById("rssOutput").innerHTML = "";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
document.getElementById("rssOutput").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET", "getrss.php?q=" + str, true);
xmlhttp.send();
}
</script>
</head>
<body>
<?php
$xml2 = ("http://www.volcano.si.edu/news/WeeklyVolcanoRSS.xml?");
$xmlDoc2 = new DOMDocument();
$xmlDoc2->load($xml2);
$x2 = $xmlDoc2->getElementsByTagName('item');
$i2 = 0;
foreach ($x2 as $y) {
$geo_rss = $y->getElementsByTagNameNS("http://www.georss.org/georss", 'point');
$title = $y->getElementsByTagName('title')->item(0)->nodeValue;
$point = $geo_rss->item(0)->nodeValue;
echo ("<h3>" . $title . "</h3>" );
echo ($point);
echo '<script type="text/javascript">'
, 'getPoint(' . $point . ');'
, '</script>'
;
++$i2;
}
?>
</body>
</html>
P.S。 :我对另一组参数采用了相同的程序,它的工作原理非常好。我不知道为什么这个不起作用。
答案 0 :(得分:1)
将您的PHP代码更改为编写脚本,如下所示:
echo '<script type="text/javascript"> getPoint("' . $point . '");</script>';
你只需要将$ point包装成双引号。