簡體   English   中英

如何使用jQuery,PHP和MySQL加載JSON數據

[英]How to load JSON data with jQuery, PHP and MySQL

我想創建一個動態下拉菜單,其中一個選擇基於另一個選擇的值。 我嘗試了很多次但失敗了。 我的代碼如下。 任何人都可以幫我找出問題所在。

//模板:

<script type="text/javascript">  

$(function(){ 
  getSelectVal(); 
  $("#grouptypes").change(function(){ 
      getSelectVal(); 

  }); 
});

function getSelectVal(){ 
    $.getJSON('<?php echo url_for('group_utilization/GroupModification') ?>', {'grouptypes':$("#grouptypes").val()},function(data){ 
        var groups = $("#groups"); 
        $("option",groups).remove(); 
        $.each(json,function(index,array){ 
            var option = "<option value='"+array['id']+"'>"+array['title']+"</option>"; 
            select.append(option); 
        }); 
    }); 
} 

</script>

GroupType: <select id="grouptypes">

  <?php foreach($grouptypes as $type) : ?>

  <?php echo "<option value='" . $type->name . "'>" .$type->name. "</option>"; ?>

  <?php endforeach ?>

</select><br />
<br />Result:<span id="list-of-groups"></span>

<br />
Group: <select name="group" id="groups">

</select><br />

另一個返回數據庫返回值的文件:

if(isset($_GET["grouptypes"])){
 $grouptypes = $_GET["grouptypes"];

 $query = "SELECT g.name FROM groups g INNER JOIN group_types gt ON(gt.id = g.group_type_id AND gt.name = ?)";

 $groups = $db->getResultsForQuery($query, $grouptypes);
 echo json_encode($groups);
 }

您的PHP腳本是否為JSON發送了適當的標頭?

試着把這個juste放在“echo json_encode($ groups);”之前。 最終進行退出調用以避免額外輸出。

$ groups = $ db-> getResultsForQuery($ query,$ grouptypes);
報頭( '內容類型:應用/ JSON;字符集= UTF-8');
echo json_encode($ groups);
出口();

最上面的代碼塊應該是:

$(document).ready(function(){ 
  getSelectVal(); 
  $("#grouptypes").change(function(){ 
      getSelectVal(); 

  }); 
});

在附加之前,您需要使用jQuery var引用標記:

function getSelectVal(){ 
  var select = $("#grouptypes");

  $.getJSON('<?php echo url_for('group_utilization/GroupModification') ?>', {'grouptypes':$("#grouptypes").val()},function(data){ 
    var groups = $("#groups"); 
    $("option",groups).remove(); 
    $.each(data,function(index,array){ 
        var option = "<option value='"+array['id']+"'>"+array['title']+"</option>"; 
        select.append(option); 
    }); 
  }); 
} 

您可能對url_for()函數的方式有問題,因為它可能無法正確輸出您的鏈接以供getJSON使用。 例如,如果我在你的代碼附近擺弄一些東西(BTW,你使用的是Symphony嗎?)

 $.post("<? echo 'server.php';?>", function(data) {
                    aler(data);

                    });

            });

我在我的JS代碼中得到了這個鏈接

http://dev.wonderland/%3C?%20echo%20'server.php'?%3E

這顯然不是我想要達到的聯系。 此外,請確保在PHP代碼的末尾添加分號並再次嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM