9

我真的已经搜索了将近 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 获取这些数据?我的目标是制作一个基于这些 JSON 数据生成投票的 .js 脚本,但老实说,我找不到任何关于如何做到这一点的示例。猜测是这样的:

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 提交表单的最后一页。

4

4 回答 4

10

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

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

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

var neededData; 
$.getJSON('url', data, function(jsonData) {
    neededData = jsonData; 
});       
于 2012-07-17T06:21:31.407 回答
5

试试 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 结构的;

{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}
于 2012-07-17T06:21:36.537 回答
3

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

使用json_encode将 JSON 传递给 javascript。

使用可以使用each在 javascript 结束时获取 JSON 中的值。

例子

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

于 2012-07-17T06:23:57.943 回答
2

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

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

高温高压

于 2012-07-17T06:27:09.490 回答