Javascript 我想创建一个包含php变量的.json文件?
我想创建一个名为“file.json.php”的文件 它包含来自PHP的变量,如$\u POST['foo'] 此文件将根据ajax调用传递的post var值生成不同的结果 为call file.php.json创建ajax需要哪些配置?如何将数组作为参数传递给json文件Javascript 我想创建一个包含php变量的.json文件?,javascript,php,json,Javascript,Php,Json,我想创建一个名为“file.json.php”的文件 它包含来自PHP的变量,如$\u POST['foo'] 此文件将根据ajax调用传递的post var值生成不同的结果 为call file.php.json创建ajax需要哪些配置?如何将数组作为参数传递给json文件 jqxhr = $.ajax('../files/data/file.json'). 这是Json文件 { "data": [{ "work": "Symfony No. 3 in D minor", "
jqxhr = $.ajax('../files/data/file.json').
这是Json文件
{
"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"
}
]
}
最后,我创建了一个名为file.json.php的文件,并将其作为php普通文件进行管理,但添加了一个带有函数json_encode()的echo 这是我如何制作文件的摘录
//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,“这很重要
data = JSON.parse(jqxhr.responseText);
用于在ajax调用中考虑
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文件”那么你是在尝试创建Json文件,还是在尝试使用/读取Json文件来生成其他结果?实际上,这是一个用于为datatableHi创建表的Json,@PatrickQ,我正在尝试生成一个Json文件来放置dinamic内容。就目前的一些变量而言,这个问题太广泛了。任何“是否可能……”问题的答案几乎总是“是的”。你需要做一些尝试来实现你的目标,看看你能走多远。如果您在某些特定的问题上遇到困难,请随时发布一个问题,其中包括您正在使用的代码、预期结果是什么、实际结果是什么以及您已经完成的调试。
{
"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"
}]
}