很抱歉,如果这是一个愚蠢的问题。我正在对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循环。我是新手,不知道它是否会起作用。有人可以帮忙吗?
答案 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中的数组做什么。