Json导致PHP varibale

时间:2017-07-10 08:17:53

标签: php json

我有一个脚本从我的表调用dat并以JSON格式返回它。如何将var npsdata作为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的结果。

非常感谢你的时间。

1 个答案:

答案 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/