我正在使用插件ParamQuery网格和数据源需要获取json数据, 这就是我想用$做什么的。 getJson(...){},但我有一个名为data.php的PHP类,其中包含 一个名为GetData的方法,其他InsertData,DeleteData,(CRUD-using PDO),GetData将infromacion作为json返回。 问题是如何从jquery 调用函数?
我使用的代码是:
data.php
<?php
class Data {
private $db = NULL;
const DB_SERVER = "localhost";
const DB_USER = "root";
const DB_PASSWORD = "usbw";
const DB_NAME = "musicstore";
public function __construct() {
$dsn = 'mysql:dbname=' . self::DB_NAME . ';host=' . self::DB_SERVER;
try {
$this->db = new PDO($dsn, self::DB_USER, self::DB_PASSWORD);
} catch (PDOException $e) {
throw new Exception('Connection failed: ' . $e->getMessage());
}
return $this->db;
}
public function getData() {
$statement = $this->db->prepare("Select * from Customer");
$statement->execute();
if ($statement->rowCount() > 0) {
echo json_encode($statement);
}
return false;
}
}
?>
functionjquery.js
$.getJSON('Data.php', function(data) {
var obj = {};
obj.width = 1000;
obj.height = 400;
obj.colModel = [{title: "Rank", width: 150, dataType: "integer"},
{title: "Company", width: 200, dataType: "string"},
{title: "Revenues ($ millions)", width: 200, dataType: "float", align: "right"},
{title: "Profits ($ millions)", width: 200, dataType: "float", align: "right"}];
obj.dataModel = {data: data};
$("#grid_array").pqGrid(obj);
});
答案 0 :(得分:2)
您需要创建一个构建Data
类实例的页面,然后输出getData()
的结果
尽管如此,你不应该echo
来自函数内部。将您的getData
方法更改为以下内容:
public function getData() {
$statement = $this->db->prepare("Select * from Customer");
$statement->execute();
return $statement->rowcount() > 0 ? $statement->fetchAll() : NULL;
}
然后,为了透明起见,创建一个新页面让我们称之为json_data.php
:
require_once "data.php";
$dataObj = new Data();
echo json_encode($dataObj->getData());
现在更改jQuery中的$.getJSON
调用以请求json_data.php
页面。
$.getJSON('json_data.php', function(data) { ... });
这应该有用。
答案 1 :(得分:1)
实际上,您可以将参数data
与$.getJSON
请求一起传递,以确定要执行的方法。
对于例如。
functionjquery.js 中的
$.getJSON('data.php', { method:'get' }, function(data) { ... });
data.php 中的
将其更改为@Jason声明的最佳做法,并在其中
if(isset($_GET['method'])){
switch (($_GET['method'])) {
case 'get':
echo json_encode(getData());
exit();
//other cases go here
default:
break;
}
}
这样就不需要为每个方法创建额外的页面了