首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我想创建一个包含php变量的文件.json?

我想创建一个包含php变量的文件.json?
EN

Stack Overflow用户
提问于 2018-10-24 01:51:05
回答 1查看 68关注 0票数 -1

我想创建一个名为"file.json.php“的文件

它包含来自PHP的变量,如$_POST‘’foo‘。

此文件将根据ajax调用传递的post var值的值生成不同的结果。

为调用file.php.json创建ajax需要哪些配置?如何将数组作为参数传递到json文件?

代码语言:javascript
复制
jqxhr = $.ajax('../files/data/file.json').

这是Json文件。

代码语言:javascript
复制
{
"data": [{
    "work": "Symfony No. 3 in D minor",
    "id": "1",
    "composer": "Anton Bruckner"
}, {
    "work": "Violin Concerto in E minor",
    "id": "2",
    "composer": "Mendelssohn Felix"
}, {
  "work": "Symfony No.1 in C major",
  "id": "3",
  "composer": "Beethoven, Ludwig van"
}, {
    "work": "Solution for dynamic headers in datatables",
    "id": "4",
    "composer": "Fasani, Guza"
  }],
"columns": [
                    {
                        "data": "work",
                        "name": "Work"
                    },
                    {
                        "data": "id",
                        "name": "Product ID"

                    },
                    {
                        "data": "composer",
                        "name": "Composer"
                    }
            ]
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-25 03:40:10

最后,我创建了一个以php扩展名file.json.php为结尾的文件,并像处理普通php文件一样对其进行管理,但使用函数json_encode()添加了一个回显。

这是我如何制作这个文件的摘录。

代码语言:javascript
复制
  //only making to arrays an array (in this case for datatables dynamic columns on the fly)

    $columns[] = array("data" => "id", "name"=>"Id");
    $columns[] = array("data" => "number", "name"=>"numeroItem");
    $columns[] = array("data" => "item", "name"=>"Item");

    $a = array();
    $a['id'] = $row[$k]['id'];
    $a['number'] = $row[$k]['number'];
    $a['item']= $row[$k]['Item'];


    $data[] = $a;

    $json_for_datatable = array("columns" => $columns, "data" => $data);

    echo json_encode($json_for_datatable);

对于配置或注意事项,使用函数JSON.parse()接收de responseText是必要的,这很重要!

代码语言:javascript
复制
data = JSON.parse(jqxhr.responseText);

在ajax调用中考虑

代码语言:javascript
复制
var data,
            tableName = '#exampleTablaDinamica'+$(this).attr("data-id"),
            columns, str,
            jqxhr = $.ajax('../files/data/data.json.php?idPartida='+$(this).attr("data-idpartida")+'&meses='+ selected +'&idPresupuesto='+$('#idPresupuesto').val())
                    .done(function () {
                        data = JSON.parse(jqxhr.responseText);
            // Iterate each column and print table headers for Datatables
            $(tableName + " thead").html("<tr></tr>");

            $.each(data.columns, function (k, colObj) {
                str = '<th>' + colObj.name + '</th>';
                $(str).appendTo(tableName+'>thead>tr');
            });
            // Add some Render transformations to Columns
            // Not a good practice to add any of this in API/ Json side



            data.columns[0].render = function (data, type, row) {
                return data;
            }
            data.columns[1].render = function (data, type, row) {
                return data;
            }
            data.columns[2].render = function (data, type, row) {
                return "<a href='a.php'>" + data + "</a>";
            }

            // Debug?
            console.log(data.columns[0]);

            if ( $.fn.DataTable.isDataTable(tableName) ) {
              $(tableName).DataTable().destroy();

            }


            table = $(tableName).dataTable({
                "data": data.data,
                "columns": data.columns,
                "responsive":true,
                "fnInitComplete": function () {
                    // Event handler to be fired when rendering is complete (Turn off Loading gif for example)
                    console.log('Datatable rendering complete');
                }
            });

        })
        .fail(function (jqXHR, exception) {
                        var msg = '';
                        if (jqXHR.status === 0) {
                            msg = 'Not connect.\n Verify Network.';
                        } else if (jqXHR.status == 404) {
                            msg = 'Requested page not found. [404]';
                        } else if (jqXHR.status == 500) {
                            msg = 'Internal Server Error [500].';
                        } else if (exception === 'parsererror') {
                            msg = 'Requested JSON parse failed.';
                        } else if (exception === 'timeout') {
                            msg = 'Time out error.';
                        } else if (exception === 'abort') {
                            msg = 'Ajax request aborted.';
                        } else {
                            msg = 'Uncaught Error.\n' + jqXHR.responseText;
                        }
            console.log(msg);
        });

最后,这是生成的JSON内容。

代码语言:javascript
复制
{
"columns": [{
    "data": "id",
    "name": "Id"
}, {
    "data": "number",
    "name": "number"
}, {
    "data": "item",
    "name": "Item"
}, {
    "data": "10 2018",
    "name": "10 2018"
}, {
    "data": "11 2018",
    "name": "11 2018"
}, {
    "data": "total",
    "name": "total"
}],
"data": [{
    "id": "1",
    "number": "1.1",
    "item": "loremipsum  loremipsum  loremipsum  loremipsum  ",
    "10 2018": "0",
    "11 2018": "0",
    "total": "20.741"
}]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52955037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档