JSON从装有SQL数据的PHP解析数组返回[对象Object]

蓖麻

我正在尝试使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);

正如您将dataTypeas指定为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章