私はbodyタグのonloadのイベントの下で上記のXMLコンテンツを読んでいる私のmain.phpページの下PHP SERVER属性がjavascriptの関数で機能していませんか?
<?php
$path = trim(ReadData("data_file_path"));
$speed_data_file = $path . "speed";
$rmp_data_file = $path . "rpm";
$temp_data_file = $path . "temp";
$fuel_data_file = $path . "fuel";
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
echo '<table_info>';
echo "<speed>";
echo ReadData($speed_data_file);
echo "</speed>";
echo "<rpm>";
echo ReadData($rmp_data_file);
echo "</rpm>";
echo "<temp>";
echo ReadData($temp_data_file);
echo "</temp>";
echo "<fuel>";
echo ReadData($fuel_data_file);
echo "</fuel>";
echo '</table_info>';
function ReadData($filepath)
{
$data = file_get_contents($filepath) or null;
return $data;
}
?>
を次のように私はxml.phpページを使用してXMLを生成しています。
...
function Onload()
{
var xml_data_file = "http://" + "localhost" + "/demo/xml.php";
loadXMLDoc(xml_data_file, function() {updateXMLtoElement()});
}
function loadXMLDoc(url,cfunc)
{
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=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function updateXMLtoElement()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
z = xmlhttp.responseXML;
if(z.getElementsByTagName("speed")[0].childNodes[0].nodeValue != null) {
document.getElementById("speed_dial").setAttribute("data-value", z.getElementsByTagName("speed")[0].childNodes[0].nodeValue);
}
if(z.getElementsByTagName("rpm")[0].childNodes[0].nodeValue != null) {
document.getElementById("rmp_dial").setAttribute("data-value", z.getElementsByTagName("rpm")[0].childNodes[0].nodeValue);
}
if(z.getElementsByTagName("temp")[0].childNodes[0].nodeValue != null) {
document.getElementById("temp_dial").setAttribute("data-value", z.getElementsByTagName("temp")[0].childNodes[0].nodeValue);
}
if(z.getElementsByTagName("fuel")[0].childNodes[0].nodeValue != null) {
document.getElementById("fuel_dial").setAttribute("data-value", z.getElementsByTagName("fuel")[0].childNodes[0].nodeValue);
}
}
}
...
すべてうまく動作しますが、上記のコードを下の図のように変更しても機能しなくなります。クロームの「要素を検証」機能を使用して
function Onload()
{
var xml_data_file = "http://" + "<?php echo $_SERVER['SERVER_ADDR'].":".$_SERVER['SERVER_PORT']; ?>" + "/demo/xml.php";
loadXMLDoc(xml_data_file, function() {updateXMLtoElement()});
}
両方が$ _SERVER [「SERVER_ADDRを」]属性と$ _SERVER [「SERVER_PORT」] resplyと思われ、適切なサーバーのアドレスとポートに対応しています。だから何がうまくいかないの?
の出力は「http://」です。 $ _ SERVER ['SERVER_ADDR']。$:SERVER ['SERVER_PORT']; – Ima
"http://127.0.0.1:80/demo/xml.php"と私のブラウザでこのURLを実行すると、xmlがデータと共に生成されます。 –
コンソールを調べて、javacriptエラーがないか確認できますか – Ima