我有一个脚本从我的表调用dat并以JSON格式返回它。如何将var nps
和data
作为php变量回显。
我的剧本:
$.ajax({
type: "POST",
url: "../charts/1-2-4-reports_nps.php?TAG=<?php echo $_SESSION['SectionVar'];?>&From=<?php echo $_SESSION['StartDate'];?>&To=<?php echo $_SESSION['EndDate'];?>",
cache: false,
success: function(data){
var nps = data[0].name;
console.log(nps);
var data = data['data'];
console.log(data);
$("#div1").append($("<div/>", { id: "div2", text: nps }));
}
});
我的Json回归:
[{"name":"nps","data":[35]}]
类似$nps = data['nps']
的内容,并回显$nps
的结果。
非常感谢你的时间。
答案 0 :(得分:1)
我认为最初您对代码运行的上下文感到困惑。var nps = data['nps'];
是JavaScript。它在浏览器中运行,并在加载页面后运行。
$nps
是一个PHP变量,PHP在服务器上运行,并在页面加载之前运行。事实上,它是PHP,它创建HTML,CSS,脚本等,然后下载到浏览器。下载之后,JavaScript将单独执行。
这两种语言之间没有直接的联系,除了你可以使用PHP生成JavaScript(就像你用它来生成HTML)。
一旦你理解了这一点,那么你就会意识到要在页面的下方显示你的nps
变量,你需要使用JavaScript来操作网页并插入数据。
要解决的第一个问题是从服务器返回的数据将作为一个看起来像JSON但不是实际JSON对象的字符串返回。你可以添加
dataType: "json"
到你的ajax选项,告诉jQuery将返回的数据视为对象而不是字符串。
下一个问题是data
是一个包含单个对象的数组,而您试图将其读取为只是一个普通对象。
因此,您可以从中获取数据,并且根据您的要求,在插入现有div的新div中显示每个值,您可以执行以下操作:
function success(data)
{
var nps = data[0].name;
var dt = data[0].data[0];
$("#div1").append($("<div/>", { id: "div2", text: nps }));
$("#div3").append($("<div/>", { id: "div4", text: dt }));
}
您可以在此处查看一个工作示例(模拟ajax调用,但使用正确的数据结构):https://jsfiddle.net/yukot05x/5/