[英]how can I fetch data from php to my jquery script in a desired json format?
我有一個查詢, 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
在這一行中data.forEach is not a function
:
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;
}
數據是我現在使用的格式的數據。 那么如何更改格式?
這里有更多細節:
我在這里使用buildTableBody():
function table(data, columns) {
return {
table: {
headerRows: 1,
body: buildTableBody(data, columns)
}
};
}
但是,當我將數據類型從文本更改為json時,出現了錯誤:
Uncaught TypeError: Cannot read property 'toString' of undefined
從buildTableBody
方法buildTableBody
。
當我現在開始alert(ans)
,我得到:
[object Object],[object Object],[object Object]
您有什么提示我該如何解決?
----另一個編輯:
這正是我想要實現的目標:
var externalDataRetrievedFromServer = [{名稱:'Bartek',年齡:34},{名稱:'John',年齡:27},{名稱:'Elizabeth',年齡:30},];
函數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;
}
函數表(數據,列){返回{表:{headerRows:1,正文:buildTableBody(數據,列)}}; }
var dd = {內容:[{文本:'動態零件',樣式:'標題'},表格(externalDataRetrievedFromServer,['名稱','年齡'])]}
您正在設置dataType:'text'
因此響應將以字符串形式返回到success
回調。
由於沒有String.prototype.forEach()
,因此會出現錯誤
更改為dataType:'json'
,jQuery將在內部解析響應到數組。
它沒有顯示在哪里調用buildTableBody()
以便能夠進一步協助您
forEach用於行,$ .each用於列。
此處演示: http : //jsfiddle.net/0cc3bgp2/
var x = '[{"name":"Bartek","age":"34"},{"name":"John","age":"27"},{"name":"Elizabeth","age":"30"}]';
var rows = $.parseJSON(x);
rows.forEach(function(row) {
var dataRow = [];
$.each(row, function(index, value) {
dataRow.push(value);
});
//body.push(dataRow);
console.log(dataRow);
});
// WILL LOG:
//
// ["Bartek", "34"]
// ["John", "27"]
// ["Elizabeth", "30"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.