【发布时间】:2016-01-18 09:54:02
【问题描述】:
我有一个查询Select name, age from users,我希望它以特定格式将内容返回给 jquery:
var externalDataRetrievedFromServer = [
{ name: 'Bartek', age: 34 },
{ name: 'John', age: 27 },
{ name: 'Elizabeth', age: 30 },
];
到目前为止,在 php 方面我有:
$fetch = "SELECT name, age from users";
$result = $mysqli->query($fetch);
$data = array();
$data = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $data );
在 jquery 网站上我有:
$.ajax({
url: './getJson.php',
type: "POST",
data: {
users: users
},
dataType:'text',
success: function(ans)
{
alert(ans);
但它以以下格式返回数据:
[{"name":"Bartek","age":"34"},{"name":"John","age":"27"},{"name":"Elizabeth","age":"30"}]
我需要我在文章开头提到的特定格式,因为现在我当前的逻辑(我不想更改)给我一个错误:data.forEach is not a function in this line:
function buildTableBody(data, columns) {
var body = [];
body.push(columns);
data.forEach(function(row) {
var dataRow = [];
columns.forEach(function(column) {
dataRow.push(row[column].toString());
})
body.push(dataRow);
});
return body;
}
其中 data 是我现在拥有的格式的数据。那么如何更改格式呢?
这里有更多细节:
我在这里使用 buildTableBody():
function table(data, columns) {
return {
table: {
headerRows: 1,
body: buildTableBody(data, columns)
}
};
}
但是,当我将数据类型从 text 更改为 json 时,我收到了错误:
Uncaught TypeError: Cannot read property 'toString' of undefined
来自方法buildTableBody。
当我现在做alert(ans) 时,我得到:
[object Object],[object Object],[object Object]
你有什么线索可以解决吗?
----另一个编辑:
这正是我想要实现的目标:
var externalDataRetrievedFromServer = [ {名称:'Bartek',年龄:34 }, { 姓名:“约翰”,年龄:27 }, { 姓名:“伊丽莎白”,年龄:30 }, ];
函数 buildTableBody(数据,列){ var body = [];
body.push(columns);
data.forEach(function(row) {
var dataRow = [];
columns.forEach(function(column) {
dataRow.push(row[column].toString());
})
body.push(dataRow);
});
return body;
}
函数表(数据,列){ 返回 { 桌子: { 标题行:1, 正文:buildTableBody(数据,列) } }; }
var dd = { 内容: [ { text: '动态部分', style: 'header' }, 表(externalDataRetrievedFromServer,['name','age']) ] }
【问题讨论】:
-
这是一个快速的技巧,但您可以在 $data 上使用 str_replace 来交换 : 和 , 周围。
标签: javascript php jquery json