因此,我使用php+mysql将XML中的数据库内容传递给一个javascript。
>
$XML =“& lt;?xml version='1.0'encoding='utf-8'?><忏悔gt;<待定>“;
$pending=$M->mysqlHandler->查询(“选择ID、性别、年龄、供认、发布日期为0的供认发布日期”);
foreach($pending->行作为$pr)
{
list($id,$gender,$age,$忏悔,$dateported)=array(
$pr->列[“id”]->值,
$pr->列[“gender”]->值,
$pr->列[“年龄”]->值,
$pr->列[“忏悔”]->值,
$pr->列[“发布日期”]->值
;
$xml.=“<忏悔id=$id'gender=$gender'age=$age'dateported=$dateported'>$忏悔</忏悔>”
}
$xml.=“</pending>”;
$xml.=“<active>”;。
$active=$m->mysqlHandler->查询(
“选择不同的忏悔。*,
(从“忏悔”为“忏悔”的注释中选择count(*)作为注释,
(从忏悔=忏悔.id的句子中选择count(*)作为句子)
来自忏悔,其中忏悔.publish=1“
;
foreach($active->行作为$ar)
{
列表($id,$gender,$age,$忏悔,$dateported,$absolutions)=array(
$ar->列[“id”]->值,
$ar->列[“性别”]->值,
$ar->列[“年龄”]->值,
$ar->列[“忏悔”]->值,
$ar->列[“dateported”]->值,
$ar->列[“绝对值”]->值
;
$sql_template=“select count(*)from senses where忏悔_id=$id and degree='%s'”;
$sentence_data=数组(
“t”=>mysql_result(mysql_query(sprintf($sql_template,“t”)),0,0),
“c”=>mysql_result(mysql_query(sprintf($sql_template,“c”)),0,0),
“p”=>mysql_result(mysql_query(sprintf($sql_template,“p”)),0,0),
“l”=>mysql_result(mysql_query(sprintf($sql_template,“l”)),0,0)
;
$xml.=“<忏悔赦免=$absolutions't='123;$sentence_data['t']'”
. "C='123;$sentence_data['C']'P='123;$sentence_data['P']'“
. "l='123;$sentence_data['l']'id='id'gender='gender'”
. "Age='$Age'>$Adcribution</Adcribution>“;
}
$xML=“”;
header(“内容类型:application/xml”);
ECH$XML;
.>.
所以,从那里,你会得到一个结果,比如…
< PRE> >代码>
&?xml version='1.0'encoding='utf-8'?gt;
<忏悔>
有待解决的问题;
<admission id=“1”gender=“m”age=“20”dateported=“2010-02-06 05:22:57”>
自白。
</忏悔>
</pending>
活性;
&l t;absolutions=“0”t=“0”c=“0”p=“0”l=“0”id=“2”gender=“m”age=“18”>
忏悔。
</忏悔>
&Lt//Active & Gt;
</忏悔
.>.
我用javascript加载XML,方法是:
< PRE> >代码>
函数senddata(params、to、oncomplete)
{
if(typeof oncomplete='未定义')
{
oncomplete=function();
}
如果(window.activexobject的类型!='未定义'){
http=new activexobject(“microsoft.xmlhttp”);
http.onreadystatechange=oncomplete;
}否则{
http=new xmlhttprequest();
http.onload=oncomplete;
}
http.open(“post”,to,false);
http.setrequestheader(“内容类型”,“application/x-www-form-urlencoded”);
http.setrequestheader(“内容长度”,params.length);
http.setrequestheader(“连接”,“关闭”);
http.send(参数);
}
…这叫做:
>
//加载审批挂起数据//
senddata(“”,/leer/confesiones/“+sid,函数())
{
var xml=http.responsexml;
var pending=xml.getElementsByTagname(“pending”).getElementsByTagname(“忏悔”);
(…)
< /代码>
我就在这儿停。因为当我尝试解析XML时,在Firebug上得到以下错误:
< PRE> >代码>
XML分析错误:找不到元素位置:moz nullprincipal:7e9eab45-2f73-476d-9bdb-2370d1534f29行号1,列1:
^
< /代码>
我尝试加载/leer/confesiones/,将其作为URL输入到浏览器中,它的工作方式就像一个符咒。完全有效的XML。使用firebug检查“net”下的xhr,也就是说,有效的XML。控制台视图是给我错误的视图,就像它是一个javascript错误一样。但是http.responsetextcontains the xml,in text,andxmlis of type[object xmldocument]。
所以…我错过了什么?
solved:modified php to output json and javascript to parse it properly.
所以,从那里,你会得到一个结果,比如…
&?xml version='1.0'encoding='utf-8'?gt;
<忏悔>
有待解决的问题;
<admission id=“1”gender=“m”age=“20”dateported=“2010-02-06 05:22:57”>
自白。
</忏悔>
</pending>
活性;
&l t;absolutions=“0”t=“0”c=“0”p=“0”l=“0”id=“2”gender=“m”age=“18”>
忏悔。
</忏悔>
</active>
</忏悔
我使用javascript加载XML,方法是:
function sendData(params, to, oncomplete)
{
if (typeof oncomplete == 'undefined')
{
oncomplete = function() {};
}
if (typeof window.ActiveXObject != 'undefined' ) {
http = new ActiveXObject("Microsoft.XMLHTTP");
http.onreadystatechange = oncomplete;
} else {
http = new XMLHttpRequest();
http.onload = oncomplete;
}
http.open("POST", to, false);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-Length", params.length);
http.setRequestHeader("Connection", "close");
http.send(params);
}
…这叫做:
// Load approval-pending data //
sendData("", "./leer/confesiones/" + sId, function()
{
var xml = http.responseXML;
var pending = xml.getElementsByTagName("pending").getElementsByTagName("confession");
(...)
我就在这儿停。因为当我尝试解析XML时,在Firebug上会出现以下错误:
XML Parsing Error: no element found Location: moz-nullprincipal:{7e9eab45-2f73-476d-9bdb-2370d1534f29} Line Number 1, Column 1:
^
我试着装./leer/confesiones/
把它作为一个URL输入到浏览器中,它就像一个魅力。完全有效的XML。使用firebug检查“net”下的xhr,也就是说,有效的XML。控制台视图是给我错误的视图,就像它是一个javascript错误一样。但是http.responseText
包含XML、文本和xml
属于类型[object XMLDocument]
.
所以…我错过了什么?
解决了的:修改了php以输出json和javascript以正确解析它。