JSON无法处理OnChange事件


JSON not working with OnChange event

我最初对这篇文章进行编码是为了带回一个数据点。我意识到我需要用onchange事件(下拉选择)返回更多的字段,并将其更改为使用JSON。它不会返回任何数据。当页面第一次加载时,下拉列表是通过PHP动态构建的。我是新来的,所以任何帮助都将不胜感激。

下拉代码:

<p id="dropdown"   style="DISPLAY: none" >
        <?php
            $query = "call test.spsMSTR_AllCatListBuild";
            $stmt = $conn->query( $query );
            $dropdown = "<select id='catlist' name='catlist' onchange='getval(this);'>";
                $dropdown .= "'r'n<option value= 'NA'>Select Category</option>";
                foreach ($stmt as $row) {
                  $dropdown .= "'r'n<option value='{$row['ID']}'>{$row['RPT_NAME']}</option>";
                }
                $dropdown .= "'r'n</select>";
                echo $dropdown;
                $conn = null;
        ?>
    </p>

Ajax/JSON代码:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
<script id="source" language="javascript" type="text/javascript">
       $(document).ready(function(){
            $("#catlist").change(function(){
            var vid = document.getElementById("catlist").value;
            $.getjson("ajax.php",
            {catid:vid},
            function(result){
                alert(result); }
                .error(function(xhr) {
                    alert(xhr)
                })
                ; )
        })})
  </script>

PHP代码:

<?php include('./DBConfig.php'); ?>
<?php
    $vid = $_GET["catid"];
    $query =  "SELECT RPT_NAME, ACTIVE FROM test.MSTR_REPORT_MASTER WHERE ID = $vid" ;
    $stmt = $conn->query( $query );
    //$result = $stmt->fetchColumn();
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    echo json_encode($result);
?>

所以,我已经纠正了您的错误,您应该有下面的内容,这样它才能正常工作,除非有其他原因导致错误。

<select id='catlist' name='catlist'>
    <option value='NA'>Select Category</option>
    <option value='id1'>val1</option>
    <option value='id2'>val2</option>
    <option value='id3'>val3</option>
</select>
$(function(){
    $("#catlist").change(function() {
        var sVal = $(this).val();
        if (sVal !== "NA") { // I am assuming you don't want to make an ajax call when the value is 'NA'!
            $.getJSON("ajax.php", {catid: $(this).val()}, function(result) {
                alert(result); 
            });
            //by the way $(this).val() = id1|id2|id3
        }
    });
});

如果你格式化你的代码,你可以看到你的问题。

$(document).ready(function() {
  $("#catlist").change(function() {
    var vid = document.getElementById("catlist").value;
    $.getjson("ajax.php", {
        catid: vid
      },
      function(result) {
        alert(result);
      }
      .error(function(xhr) {   //<-- error inside getJSON
        alert(xhr)
      });)                     //<-- a random )
  })
})

您有一个内联事件onchange='getval(this);',但没有列出函数getval