如何在Json中定义变量?

时间:2012-04-25 10:35:42

标签: ajax json variables

我想在Json回调中定义一个变量。

代码;

$("select").change(function () {
          var $variable = "";
          $("select option:selected").each(function () {
                $variable += $(this).text() + " ";
              });
          $("div.yaz").text($variable);

      $('#result').html('loading...');

    $.getJSON('program-bilgileri.php', function(JSON){
        $('#result').empty();

        $.each(JSON.$variable, function(i, program){
            $('#result')
            .append(program.isim +'<br />')
            .append(program.bilgi+'<br />')
            .append(program.adres+'<hr />');
      });
    });
    })
    .trigger('change');

program-bilgileri.php返回;

{
   "programlar":[
      {
         "isim":"Zone Alarm",
         "bilgi":"bilgisayarın güvenliğini sağlar",
         "adres":"www.zonealarm.com"
      },
      {
         "isim":"Opera",
         "bilgi":"güvenli ve hızlı bir web tarayıcısıdır",
         "adres":"www.opera.com"
      },
      {
         "isim":"Photoshop",
         "bilgi":"güçlü bir imaj işleme yazılımıdır",
         "adres":"www.adobe.com"
      }
   ]
}

问题在于“$ .each(JSON。$ variable,function(i,program)”如果我在JSON中定义$ variable它不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我看到的问题是

  • 在您使用change的{​​{1}}活动中查找页面中的所有$("select option:selected")元素,而不是仅更改过的元素。
    请改用select
  • 我假设您允许在$(this).children('option:selected')元素上进行多项选择,这就是您使用select进行+=的原因..(您还添加了一个最后的空间)。但这意味着变量将类似于$variable"programlar "。 您返回的JSON的密钥为"programlar somethingelse"。一个单词,没有空格..所以当你programlar这是根据变量中的名称访问元素的正确方法时,它就不匹配。

如果JSON[$variable]元素不允许多项选择,则解决方案为

<select>

如果确实是多选,并且每个选项都可以出现在JSON中,那么您必须检查变量中找到的每个选项。

$("select").change(function() {
    var $variable = $(this).children("option:selected").text();

    $("div.yaz").text( $variable );

    $('#result').html('loading...');

    $.getJSON('program-bilgileri.php', function(JSON) {
        $('#result').empty();
        $.each(JSON[$variable], function(i, program) {
            $('#result')
                .append(program.isim + '<br />')
                .append(program.bilgi + '<br />')
                .append(program.adres + '<hr />');
        });
    });
}).trigger('change');

答案 1 :(得分:0)

尝试

$.each(JSON['programlar'], function(i, program) ... );

这将从PHP迭代这部分返回的JSON对象:

  {
     "isim":"Zone Alarm",
     "bilgi":"bilgisayarın güvenliğini sağlar",
     "adres":"www.zonealarm.com"
  },
  {
     "isim":"Opera",
     "bilgi":"güvenli ve hızlı bir web tarayıcısıdır",
     "adres":"www.opera.com"
  },
  {
     "isim":"Photoshop",
     "bilgi":"güçlü bir imaj işleme yazılımıdır",
     "adres":"www.adobe.com"
  }