2011-08-27 63 views
1

我做錯了檢索獲取JSON值,但我似乎無法弄清楚它是什麼。不能使用jQuery

的$ .getJSON行應通過Ajax請求檢索數據,通過它當前選擇的水果名稱。然後將數據循環遍歷(它是一個包含索引'variety'的數組,包含水果品種名稱),並添加到一個html字符串中,然後最終由Jquery將其注入到網頁的#varieties範圍內,替換之前存在的內容。

HTML

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
    <title>Toevoegen</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 

    <script language="javascript" type="text/javascript"> 
     function populateFruitVariety() { 

      var fruitName = $('input[name=fruitName]:checked').val(); 

      $.getJSON('func.php', {fruitName: fruitName}, function(fruit) { 

       var html = ''; 
       $.each(fruit[fruitName], function(index, array) { 
        html = html + '<label><input type="radio" name="variety" value="' + array['variety'] + '" />' + array['variety'] + '</label> '; 
       }); 
       $('#varieties').html(html); 

      }); 

     } 



     populateFruitVariety(); 
     $('input[name=fruitName]').change(function() { 
      populateFruitVariety(); 
     }); 

    </script> 

</head> 
<body> 

<form> 

    <div> 
     <strong>Fruit:</strong> 
     <label><input type="radio" name="fruitName" value="Apple" checked="checked" />Apple</label> 
     <label><input type="radio" name="fruitName" value="Banana" />Banana</label> 
     <label><input type="radio" name="fruitName" value="Orange" />Orange</label> 
     <label><input type="radio" name="fruitName" value="Pear" />Pear</label> 
    </div> 
    <div> 
     <strong>Variety:</strong> 
     <span id="varieties"></span> 
    </div> 
    <div> 
     <strong>Type:</strong> 
     <span id="type"></span> 
    </div> 
</form> 

FUNC.PHP

<?php 
$dsn = "mysql:host=localhost;dbname=dbname"; 
$username = "user"; 
$password = "pass"; 



$pdo = new PDO($dsn, $username, $password); 


$rows = array(); 
if(isset($_GET['fruitName'])) { 
    $stmt = $pdo->prepare("SELECT DISTINCT variety FROM fruit WHERE name = ? ORDER BY variety"); 
    $stmt->execute(array($_GET['fruitName'])); 
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 

} 

echo json_encode($rows); 

?> 

出於某種原因,這是不正常因爲jQuery不會拿起JSON值我可以從看控制檯。

當改變的最後一塊的jquery代碼到:

$(function() { 
      populateFruitVariety(); 
      $('input[name=fruitName]').change(function() { 
       populateFruitVariety(); 
      }); 
     }); 

的值將在控制檯被檢索,但是未示出作爲選項框。雖然在控制檯中仍然存在錯誤。 (一個是不確定的)

回答

2

我無法測試這一點,但如果你改變 -

$.each(fruit[fruitName], function(index, array) { 

$.each(fruit, function(index, array) { 

工作的呢?使用這些教程

+0

看起來有效的Wooh!但只用時:_ $(函數()_ 根據本教程,應該可以用_fruit [fruitName] _和不_ $(函數()_,請參閱: HTTP:// WWW。 electrictoolbox.com/json-data-jquery-php-radio-buttons/ – Jroen

0

注意每一個人,他們是!並使用jQuery 1.4.2 - 我只花了一天多想做一個簡單的selectbox工作(http://www.electrictoolbox.com/json-data-jquery-php-mysql/new Option()似乎並沒有在1.7.2工作),沒有使用jQuery 1.7.2工作,當我切換到jQuery 1.4.2它立即工作。

在jroen是使用jQuery 1.6.1上面的例子中,這可能是問題。