2012-04-25 21 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。$變量,函數(I,程序)」 如果我JSON定義$變量它不工作。

任何想法?

+0

我不認爲這段代碼的確如你所想。期望'JSON。$ variable'做什麼?如果您期望它訪問具有與$ variable的值相等的對象的鍵,則會假設錯誤的事物。那將是JSON [$ variable]。 – Corbin 2012-04-25 10:38:45

+0

從'getJSON'請求中發佈返回的JSON。 – 2012-04-25 10:39:36

+0

@Corbin我嘗試JSON [$變量],但它不起作用。 – mrchad 2012-04-25 13:52:03

回答

1

我看到的問題是

  • 裏面你正在使用$("select option:selected")指找到頁面中所有select元素change事件,而不僅僅是一個改變。
    改爲使用$(this).children('option:selected')
  • 我假設你是讓select元素的多重選擇,這就是爲什麼你與$variable+= ..(你也是在最後加空格)。這意味着,雖然,該變量將是類似"programlar ""programlar somethingelse"。 您返回的JSON雖然有一個密鑰programlar。一個單詞,沒有空格..所以當你做JSON[$variable]這是正確的方式來訪問基於變量名稱的元素,它不匹配。

如果<select>元素不允許多個選擇,那麼解決的辦法是

$("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'); 

如果它確實是一個多項選擇和每個選項可以在JSON出現,那麼你必須檢查每個選項在變量中找到。

$("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

嘗試

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

這將遍歷您返回JSON對象,這部分從PHP:

{ 
    "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" 
    } 
相關問題