我正在使用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>
getmainnews.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 \吨\吨\吨\吨\ 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和必须是数组,所以responseText,我想,是一个多维数组?这是我在显示它时遇到的问题吗?
编辑3:
console.log(a.items)给了我一个“未定义”,所以我记录了xmlhttp.responseText。
答案 0 :(得分:1)
如果没有确切了解您的JSON的样子,很难确定。但是,由于您正在编码数组,我怀疑是在改变:
a.items
到
a[0].items
会做到这一点......
修改强>
我愿意:
document.getElementById('daily').innerHTML = JSON.stringify(a.items);
这会将您的对象转换为可以分配给元素innerHTML
的字符串。我不确定这是否正是您想要做的,但是当您发现要使用该方法显示的元素时应该有效。
修改2
您可以将PHP更改为仅输出您想要的内容。但是,您也可以在JS中过滤它:
a.items[0].pic
和
a.items[0].article
如果那些没有按原样显示,您可以使用stringify
方法,但您不需要,因为这些项目似乎是字符串。
另请注意,如果您有多个项目,则需要将0更改为您要定位的项目的索引。