我使用的是 jQuery,这很容易完成,但我想将其更改为常规 javascript,因为我将在 phonegap 中使用它,并且我不想每次向服务器发出请求时都循环通过 js 框架。也许离开 jQuery 是一个不好的理由,但似乎它会让一切变得更快。所以我需要一些关于这段代码的帮助:
<body onload="init();">
<div id="daily"></div>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState === 4 && xmlhttp.status === 200){
var a = JSON.parse(xmlhttp.responseText);
document.getElementById('daily').innerHTML = a.items;
}
};
xmlhttp.open("GET", serviceURL +"getmainnews.php" , true);
xmlhttp.send();
}
</script>
获取mainnews.php
//mysqli query
$daily = array();
while ($r = mysql_fetch_assoc($day)){
$daily[] = $r;
}
echo json_encode(array("items" => $daily, "allitems" => $mainnews,...));
在 Chrome DT 中,我可以看到返回的编码数据,但我无法将第一个项目显示到我的第一个 div 中,id="daily"。使用我提供的代码,我得到的只是 [object, Object]。我究竟做错了什么?
编辑:
所以我的查询从我的数据库中选择了整行,它在一个数组中:
{"items":[{"id":"1","pic":"","topic":"daily","article":" \t\t\t\t\t \t\t\ t\t\t\u0417...","链接":"http://www....","text_cont":..."}]}
我怎样才能只显示图片和文章而不显示所有其他垃圾?我必须修改我的php文件吗?
编辑2:
$day = mysql_query("SELECT pic, article, link FROM table WHERE topic='daily' ORDER BY id DESC LIMIT 1");
$daily = array();
while ($r = mysql_fetch_assoc($day)){
$daily[] = $r;
}
$exc = mysql_query("SELECT pic, article, link FROM table WHERE topic='exclusive' ORDER BY id DESC LIMIT 1");
$excl = array();
while ($e = mysql_fetch_assoc($exc)){
$excl[] = $e;
}
$mus = mysql_query("SELECT pic, article, link FROM table WHERE topic='must' ORDER BY id DESC LIMIT 1");
$must = array();
while ($m = mysql_fetch_assoc($mus)){
$must[] = $m;
}
echo json_encode(array("items" => $daily, "exc" => $excl, "must" => $must));
那是我完整的带有查询的 php 文件。Items、exc 和 must 是数组,所以我猜 responseText 是一个多维数组?这是我显示它的问题吗?
编辑 3:
console.log(a.items) 给了我一个“未定义”,所以我记录了 xmlhttp.responseText。