我正在尝试使PHP
文件SQL DB
通过Ajax
调用从中检索数据,并以JSON
格式存储数据。
Ajax
称呼
$.ajax({
method:"POST",
dataType:"json",
crossDomain:true,
url:"getCourses.php",
success: function(response){
var courses=JSON.parse(response);
var el="";
for(var i=0;i<courses.length;i++)
{
console.log(courses[i].title);
}
},
error: function(request,error){
console.log("ERROR: Request " + request + "\nSpecific Error: " + error);
}
});
PHP
功能
//this is a test, not the actual SQL query
$query="SELECT * FROM courses ORDER BY id;";
$result=$mysqli->query($query);
if($result->num_rows >0) //if there is at least one row...
{
$myArray= array(); //...create an array...
while($row = $result->fetch_array(MYSQL_ASSOC)){ //...fetch it...
$myArray[]=$row; //...and add its row to $myArray ([] means autoincrement).
}
echo json_encode($myArray);
但是,Chrome控制台给了我一个parserror
。从昨天开始我一直在b头,似乎找不到问题。我知道JSON在处理non-UTF8
字符串方面遇到了麻烦,但是即使这样做也会utf8_encode
给出此错误。
更新
我仅按照说明删除了JSON.parse方法,并将其替换为
var courses=response;
相反,在PHP文件中,我添加了headers
和
foreach ($myArray as $row)
{
//UTF8 encoding to avoid parsing problems
htmlentities($row['title'],ENT_QUOTES | ENT_IGNORE, "UTF-8");
htmlentities($row['description'],ENT_QUOTES | ENT_IGNORE, "UTF-8");
}
在JSON编码之前。Chrome控制台总是向我返回此信息
ERROR: Request [object Object]
Specific Error: parsererror
您不应该手动解析json:
var courses=JSON.parse(response);
正如您将dataType
as指定为json一样,jQuery已经对其进行了解析,因此response
已经是一个对象。
因此,您只需要:
success: function(courses){
var el="";
for(var i=0;i<courses.length;i++)
{
console.log(courses[i].title);
}
},
请注意,在指定dataType
类似值时,您始终需要输出有效的json ,因此,如果您if
不满足php脚本中的条件,则也应以json格式发送错误消息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句