如何将JSON从PHP转换为JS

How to get JSON from PHP to JS?

本文关键字:转换 JS PHP JSON      更新时间:2023-10-28

我已经搜索了将近2个小时,还没有找到一个关于如何将JSON数据从PHP传递到JS的好例子。我在PHP中有一个JSON编码脚本,它呼应了一个看起来或多或少像这样的JSON脚本(伪代码)。

{
"1": [
  {"id":"2","type":"1","description":"Foo","options:[
    {"opt_id":"1","opt_desc":"Bar"},
    {"opt_id":"2","opt_desc":"Lorem"}],
  {"id":"3","type":"3","description":"Ipsum","options:[
...
"6":
  {"id":"14","type":"1","description":"Test","options:[
...
etc

问题是,如何使用JavaScript获取这些数据?我的目标是制作一个.js脚本,根据这些JSON数据生成民意调查,但老实说,我找不到任何关于如何做到这一点的例子。猜测它有点像:

Obj jsonData = new Object();
jsonData = $.getJson('url',data,function()){
  enter code here
}

如有任何好的例子或类似的链接,我们将不胜感激。我认为用PHP编码数据是一个棘手的部分。。。

编辑:

我得到了这个代码片段,所以我可以在JS中查看我的整个JSON数据。但现在我似乎不知道如何获取内部数据。它确实打印出了阶段编号(1-6),但我不知道如何获得问题数据,然后再打印每个问题中的选项数据。我必须试验嵌套的每个循环吗?

$(document).ready(function()
    {       
        $('#show-results').click(function() 
        {
            $.post('JSAAN.php', function(data) 
            {
                var pushedData = jQuery.parseJSON(data);
                $.each(pushedData, function(i, serverData)
                {
                    alert(i);
                })
            })
        })
    });

这里的想法是进入中间层次的问题信息,打印出问题描述,然后根据问题类型-在进入下一个问题之前,循环浏览选项(如果有)以创建复选框/单选按钮组。第一个数字代表我目前正在进行的多阶段民意调查的哪个阶段。我的计划是通过隐藏/显示各种div将其分为6个阶段,直到通过Ajax提交表单的最后一页。

不确定,但我认为,您可以使用

$.getJSON('url', data, function(jsonData) {                       
  // operate on return data (jsonData)    
});

现在您可以访问和操作PHP json数据,如果你打算在getJson调用之外使用它,你可以将它分配给一个变量

var neededData; 
$.getJSON('url', data, function(jsonData) {
    neededData = jsonData; 
});       

尝试jQuery文档:http://api.jquery.com/jQuery.getJSON/

这个例子应该让你开始:

$.getJSON('ajax/test.json', function(data) {
  var items = [];
  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });
  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('body');
});

此示例基于JSON结构being;

{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}

不要在PHP中使用echo。它将打印字符串而不是JSON。

使用json_encode将json传递给javascript。

Use可以使用each在javascript端获取JSON中的值。

示例

http://www.darian-brown.com/pass-a-php-array-to-javascript-as-json-using-ajax-and-json_encode/

如果您使用JQuery,您可以在这里看到一个非常简单的方法解决方案:http://api.jquery.com/jQuery.getJSON/.

否则,我只想让您解释一下,没有办法像您在上面的代码中尝试的那样,直接用JavaScript访问JSON。要点是,JavaScript在浏览器上运行,而PHP脚本在服务器上运行。所以他们之间肯定有沟通。因此,我建议您必须通过http从服务器请求数据。

HTH