簡體   English   中英

如何以所需的json格式將數據從php提取到我的jquery腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM