PHP服务器属性在JavaScript下的函数中不起作用



我正在使用xml.php页面生成XML,如下所示

<?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;
}
?>

在我的main.php页面下,我正在读取上面标签的Onload事件下的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);
        }
    }
}
...

一切正常,但是当我在上面的代码中更改ONLOAD时,如下所示,它停止工作。

function Onload() 
{    
    var xml_data_file = "http://" + "<?php echo $_SERVER['SERVER_ADDR'].":".$_SERVER['SERVER_PORT'];  ?>" + "/demo/xml.php";
    loadXMLDoc(xml_data_file, function() {updateXMLtoElement()});
}

使用Chrome的"检查元素"功能,似乎两个属性$ _server ['server_addr']和$ _server ['server_port']呼吸,都在响应适当的服务器地址和端口。那怎么了?

通常不会由PHP处理JavaScript文件。有非常可靠的原因,这些原因超出了范围。<?php...字符串按原样在JavaScript中使用,而不是您期望的值。

您要实现的目标应该以这种方式完成:

function Onload() 
{    
    var xml_data_file = "/demo/xml.php";
    loadXMLDoc(xml_data_file, function() {updateXMLtoElement()});
}

将使用当前页面的模式,域和端口:" http://localhost/demo/xml.php"在http://localhost上打开时/xml.php"当它在http://example.com上打开时。

相关内容

  • 没有找到相关文章

最新更新