0

抱歉,如果这是一个愚蠢的问题。我正在对 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 循环。我是新手,不知道能不能用。有人可以帮忙吗?

4

1 回答 1

1

您不能发送多个 Content-Type 标头。无论如何,发送多行 JSON 是没有意义的。为什么不echo json_encode($receivedata);马上呢?或者,在你的foreach循环内部:$results[] = array( /* Your stuff here */ );在循环之后echo json_encode($results);,它会发送一个数组数组

您的 Javascript 代码正在输入响应div的类型(您正在使用),这将读出为“对象” - 不是您所期望的,但您的 JSON 响应是 JS 的对象,所以很有意义。一旦你得到数据,你应该考虑一下你想用 JS 中的数组做什么。typeof

于 2013-11-11T06:48:03.833 回答