2012-04-25 6 views
-1

私はJsonコールバックで変数を定義します。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 returns;

{ 
    "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" 
     } 
    ] 
} 

問題は、私はJSONで$変数を定義した場合、それが動作していない、ここでの "$ .each(JSON。$変数、関数(I、プログラム)" である。

任意のアイデア?

+0

私はコードがあなたが思うとは思わないと思います。 'JSON。$ variable'は何をすると思いますか? $ variableの値と等しいオブジェクトのキーにアクセスすると予想される場合は、間違ったものとみなされます。それはJSON [$ variable]です。 – Corbin

+0

返されたJSONを 'getJSON'リクエストから投稿します。 –

+0

@Corbin私はJSON [$ variable]を試しますが、動作しません。 – mrchad

答えて

1

の問題は、すべてのselectページの要素、およびだけではなく、変更されたものを見つけるあなたは$("select option:selected")を使用しているchangeイベント内部

  • です。
    $(this).children('option:selected')を代わりに使用してください。
  • 私は(あなたにも最後にスペースを追加している)..あなたがselect要素で複数選択を許可していて、$variable+=を行っている理由があると仮定しています。しかし、変数は"programlar "または"programlar somethingelse"のようになります。 返されたJSONのキーはprogramlarです。 1つの単語、スペースはありません。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'); 

です変数に見つかりました。

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

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

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

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

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

これはPHPからあなた返されたJSONオブジェクトのこの部分を反復します

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

をお試しください:

私が見るの
関連する問題