我可以使用foreach循环发送ajax调用的响应吗?

时间:2013-11-11 06:41:15

标签: javascript php ajax jquery yii

很抱歉,如果这是一个愚蠢的问题。我正在对php脚本进行ajax调用以获取一些数据,这是我的代码

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
function loadDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
var finallydata=JSON.parse(xmlhttp.responseText);

document.getElementById("myDiv").innerHTML=typeof finallydata;

 }

  }
var url='http://localhost/path/to/my/script';
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
</head>
<body>

<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadDoc()">Change Content</button>

</body>
</html>

这是我在YII的PHP脚本

if($timevalue != 0)
        {
            $model=new Products;
            $receivedata=$model->retrieveresult($timevalue);
            foreach($receivedata as $finaldata)
            {
                  header('Content-Type: application/json');
            echo json_encode(array('table'=>'products',array('productId'=>$finaldata->productId,'productName'=>$finaldata->productName,'Creation_date'=>$finaldata->Creation_date)));
            }
        }

既然我必须逐个发送多个数据记录,那么我可以使用foreach循环。我是新手,不知道它是否会起作用。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您无法发送多个Content-Type标头。无论如何,发送多行JSON都没有意义。为什么不马上echo json_encode($receivedata);?或者,在foreach循环:$results[] = array( /* Your stuff here */ );内以及循环echo json_encode($results);之后,这将发送数组

您的Javascript代码正在放入div 类型的响应(您使用的是typeof),它会读作“对象” - 而不是你期望,但你的JSON响应是JS的一个对象,所以有道理。一旦获得数据,就应该考虑用JS中的数组做什么。