将PHP数组传递给jQuery会返回空数组或通知

时间:2015-06-05 13:38:06

标签: php jquery json

我正在尝试使用php从MySQL数据库中读取一些信息,然后将结果传递给jquery并将其记录在控制台中。

要从数据库中读取,我使用:

public function getQuestions(){
    $query = 'SELECT * FROM Question';
    $statement = $this->db->prepare($query);
    $statement->execute();
    $questions = [];
    while($row = $statement->fetch()){
        $questions[] = array(
            'QuestionID' => $row['QuestionID'],
            'Content' => $row['QuestionContent']
        );
    }
    return $questions;
}

其中$this->db是PDO对象。

然后从

调用此方法
<?php

include_once 'classes/DatabaseAdapter.php';

$dba = new DatabaseAdapter();
echo $dba->getQuestions(); // Array to String conversion error.

然后从jQuery调用它:

$.ajax({
    url: 'questions.php',
    method: 'post'
}).done(function(data){
    console.log('done');
    console.log(data);
});

我遇到的问题是当我使用json_encode()在PHP中将输出编码为json时,我在控制台中得到一个空字符串,并使用JSON.parse()在jQuery中对其进行解码。然后我尝试在没有编码的情况下传递它,并在PHP行中使用echo获得通知说Array to String转换。

2 个答案:

答案 0 :(得分:0)

试试这个。

echo json_encode($dba->getQuestions());
exit;

答案 1 :(得分:0)

试试这种方式。您可以将代码调整为getQuestions()函数

Php代码

//PDO connection

$host   = "";
$user   = "";
$dbname = "";
$pass   = "";

try {
  $DBH = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass,
                    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
}

//PDO Database query and Json encode

$STH = $DBH->prepare("SELECT * FROM Question");
$STH->execute();
$result = $STH->fetchAll();
$data = array();
$data['items'] = $result;
echo json_encode($data);

<强> Jquery的

//$.getJSON is a shorthand Ajax function

$.getJSON("questions.php", function(data) {
console.log(data);
$.each(data.items, function(i, value){
console.log(value.thecolumnnameinmysqltable);
})
})

在Php im中创建一个数组,目的是你可以添加额外的数据并检索它.eg

$data = array();
$data['data'] = array("one", "two", "three", "four");
$data['items'] = $result;
echo json_encode($data);

并在Jquery中检索$ data [&#39; data&#39;]数组

    var one   = data.data[0];
    var two   = data.data[1];
    var three = data.data[2];
    var four  = data.data[3];

Getjson信息 - http://api.jquery.com/jquery.getjson/