<?php 
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<response>';
$name = $_POST['name'];
echo 'hello '.htmlentities($name);
echo '</response>';

?>
出错了。提示如下。无法显示 XML 页。 
使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。 
--------------------------------------------------------------------------------Prolog 外部不能有 DOCTYPE 声明。处理资源 'http://127.0.0.1:8088/test/test.php' 时出错。第 2 行,位置: 11 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&...

解决方案 »

  1.   

    你这段代码才8,9行,错误报的是第11行,我想八成是
    //这儿是否有HTML?有输出?
    <?php 
            header('Content-Type: text/xml');
      

  2.   

    sorry,位置看成行了, 但依然因该是test.php有BOM头
    修改下php.ini output_buffering = On;
      

  3.   


    修改了还是不行。
    以下是html的代码。上面的那份php是写在这份代码上方的。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>首页</title><script type="text/javascript">
          //script 代码...
    </script>

    </head>
    <body>
    <form action="" method="post" onsubmit="return SendRequest(); return false;">
    <table>
    <tr>
    <td>
    Name:  <input type="text" id="name" maxlength="40" />
    </td>


    <td>
    <input type="button" id="submit" value="submit" onclick="SendRequest()" />
    </td>
    </tr>
    <tr>
    <td><div id="showmesg" /></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
      

  4.   

    你的XML文档结构设计不合标准。文档元素中不因该出现<!doctype>中,而且不应该有两个(一个<response>,一个<html>)
    可以是
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <!-- 去掉了response元素, other html element -->
    或者
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <isbody>
    <response>hello,with name in $post</response><html xmlns="http://www.w3.org/1999/xhtml">
    <!-- other html element -->
    <isbody>
      

  5.   


    这样改了可以进去。
    看注释那一句,加进去之后好像没办法访问这个页面?
    <?php 
    echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <isbody>
    <?php 
    // header('Content-Type: text/xml');
    echo '<response>';
    $name = $_POST['name'];
    echo '<div id="showmesg">';
    echo 'hello '.htmlentities($name);
    echo '</div>';
    echo '</response>';
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>首页</title><script type="text/javascript">
    ...
    而且我还有一个关于ajax的问题,不知道你对ajax熟不熟?
      

  6.   

    //    header('Content-Type: text/xml');
    因为它前面有输出所以会报出错误消息,导致文档结构出错。
    把它单独放在代码第一行,保证前面不要有输出就行
    ajax我也熟悉。这儿高人很多,没有解决不了的问题
      

  7.   


    像这样吗?好像还是进入不了。
    <?php 
    header('Content-Type: text/xml');//add here
    echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <isbody>
    <?php 
    // header('Content-Type: text/xml');
    echo '<response>';
    $name = $_POST['name'];
    echo '<div id="showmesg">';
    echo 'hello '.htmlentities($name);
    echo '</div>';
    echo '</response>';
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>首页</title><script type="text/javascript">
    ...
      

  8.   


    还有,这是ajax的响应函数。XMLHttp_Object.responseXML返回[object],但是XMLHttp_Object.responseXML.documentElement却是null。而responseText里面是有需要的东西的。
    function ResponseReq()
    {
    if(XMLHttp_Object.readystate==4)
    {
    if (XMLHttp_Object.status == 200)
    {
    var xmlResponse = XMLHttp_Object.responseXML;
    // alert(XMLHttp_Object.responseXML.documentElement);
    xmlDocumentElement = xmlResponse.documentElement;
    var helloMessage = xmlDocumentElement.firstChild.data;
    // helloMessage = document.getElementById('name').value;
    document.getElementById("showmesg").innerHTML = 'hello '+'<i>'+helloMessage+'</i>';
    }
    else
    {
    alert("deal failed");
    }
    }
    }
      

  9.   

    XML搁我这儿没问题,改了下JS响应的代码。// 获取 div id='showmesg' 文本节点值:
    var xmlResponse = XMLHttp_Object.responseXML;
    var obj = xmlResponse.documentElement;
    var resObj = obj.getElementsByTagName('response')[0];
    var divObj = resObj.getElementsByTagName('div')[0];
    var text = divObj.childNodes[0];
    // 节点值是 text.nodeValue;
    // 修改文本节点值:
    text.nodeValue = 'hello '+'<i>'+  text.nodeValue +'</i>';
      

  10.   


    现在用你那份js也是会错,因为obj还是null,所以下一句还是出错。
    我觉得是那个header的问题,因为我这边添加进去之后还是没办法访问。
    好像ajax是需要这个的,但是现在没加进去所以会出错。
    我是用ie浏览器打开的。
      

  11.   

    当然IE在处理AJAX下有点弱,用alert()来看看responseXML是不是一个XML对象,如果为空,就是文档类型没有被IE识别。但我觉得代码本身没错,文档类型已经通过header()声明,大过年的真纠结。最后只能告诉你用用google
      

  12.   

    XML和HTML不能同时输出!......
            echo '</response>';
    exit;    
    ?>
      

  13.   


    不输出html的话怎么弄那些输入框提交按钮呀?