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; 展开
<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; 展开
2个回答
展开全部
首先,$("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];
}
}
其次,你确定你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毫秒自动刷新 放在的后面
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
话说。。你干嘛这么处理JSON啊。。。。php里用json_encode()函数不就成了。。。还干嘛自己拼字符串啊。。又累又不靠谱,效率还比原生的低得多。。。
其次,解析的时候,用JSON.parse()不就成了。。。。
我怀疑跟你JSON的数据也有一定的问题
其次,解析的时候,用JSON.parse()不就成了。。。。
我怀疑跟你JSON的数据也有一定的问题
追问
用//window.alert(res_objects[0].price+"--"+res_objects[1].price+"---"+res_objects[2].price)能打出数据来
但下面3行不能改变td中的值,
求你的代码……发我看看,谢谢……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询