PHP,Ajax中的高手,下面这代码通过ajax返回json对象数组,为什么不能改变<td>中的值,求解释,谢谢……

html页面:<scripttype="text/javascript">functiongetXmlHttpObject(){varxmlHttpRequest;if(... html页面:
<script type="text/javascript">
function getXmlHttpObject(){
var xmlHttpRequest;
if(window.ActiveXObject){
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}else{
xmlHttpRequest=new XMLHttpRequest();
}
return xmlHttpRequest;
}
var myXmlHttpRequest;
function updatePrice(){
myXmlHttpRequest=getXmlHttpObject();
if(myXmlHttpRequest){
var url="/php5/ajax/goldPriceProcess.php";
var data="city[]=ld&city[]=tw&city[]=dj";
myXmlHttpRequest.open("post",url,true);
myXmlHttpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
myXmlHttpRequest.onreadystatechange=chuli;
myXmlHttpRequest.send(data);
}
}
function chuli(){
if(myXmlHttpRequest.readyState==4){
if(myXmlHttpRequest.status==200){
//var res=myXmlHttpRequest.responseText;
var res_objects=eval("("+myXmlHttpRequest.responseText+")"); //ajax返回的数据类型json
//window.alert(res_objects[0].price+"--"+res_objects[1].price+"---"+res_objects[2].price);
$("ld").innerText=res_objects[0].price;
$("tw").innerText=res_objects[1].price;
$("dj").innerText=res_objects[2].price;
}
}
}
function $(id){
return document.getELementById(id);
}

window.setInterval("updatePrice()",1000); //每隔1000毫秒自动刷新
</script>

<td id="ld">123</td>
<td id="tw">785</td>
<td id="dj">235</td>
--------------------------------------------------------------------------------------------------------------
php页面:
$cities=$_POST["city"];

//返回json
//[{},{},{}]
//[{"city":"ld","price":"1500"},{"city":"tw","price","1250"},{"city":"dj","price":"710"}]

$res="[";
for($i=0;$i<count($cities);$i++){
if($i==count($cities)-1){
$res.='{"cityname":"'.$cities[$i].'","price":"'.rand(500,1500).'"}]';
}else{
$res.='{"cityname":"'.$cities[$i].'","price":"'.rand(500,1500).'"},';
}

}
echo $res;
展开
 我来答
百度网友0f37e23c0
推荐于2017-09-20 · TA获得超过1543个赞
知道大有可为答主
回答量:1070
采纳率:50%
帮助的人:1289万
展开全部
首先,$("ld").innerText 改成 $("ld").innerHTML, 另3个同理。

其次,你确定你php页面个数据格式 通过ajax访问得到的数据格式,通过 var res_objects=eval("("+myXmlHttpRequest.responseText+")"); 是想要的数据吗? 你可以测试下。建议一般php页面的返回的数据格式 是 直接的字符串格式。

可以如下修改,php返回格式
$ary = array();
for($i=0;$i<count($cities);$i++)
{
$ary[] = $cities[$i] .'='. rand(500,1500);
}
$aryValue = implode("&",$ary); //如:ld=1500&tw=1250&dj=710
echo $aryValue;

js调用
var res = myXmlHttpRequest.responseText ;
var resAry = res.split("&");
for( j=0; j< resAry.length; j ++)
{
newobj = resAry[j].split("=");
if ( newobj.length > 1 )
{
if ( $(newobj[0]) )

$(newobj[0]).innerHTML = newobj[1];
}
}
更多追问追答
追问
我返回的是json数据
追答
window.alert(res_objects[0].price+"--"+res_objects[1].price+"---"+res_objects[2].price);
你首先通过上面js测试下,是想要的数据吗? 获取到数据了吗?如果获取到了,是想要的数据

修改成下面的
$("ld").innerHTML=res_objects[0].price;
$("tw").innerHTML=res_objects[1].price;
$("dj").innerHTML=res_objects[2].price;

function $(id){
return document.getELementById(id);
} 改成
function $(id){
return document.getElementById(id);
}

还有 最好把 window.setInterval("updatePrice()",1000); //每隔1000毫秒自动刷新 放在的后面
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
绛紫方糖
2013-09-26 · TA获得超过742个赞
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:231万
展开全部
话说。。你干嘛这么处理JSON啊。。。。php里用json_encode()函数不就成了。。。还干嘛自己拼字符串啊。。又累又不靠谱,效率还比原生的低得多。。。

其次,解析的时候,用JSON.parse()不就成了。。。。
我怀疑跟你JSON的数据也有一定的问题
追问
用//window.alert(res_objects[0].price+"--"+res_objects[1].price+"---"+res_objects[2].price)能打出数据来

但下面3行不能改变td中的值,
求你的代码……发我看看,谢谢……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式