JSON无法使用OnChange事件

时间:2015-03-23 16:08:22

标签: javascript php jquery ajax json

我最初将这篇文章编码为带回一个数据点。我意识到我需要更多带有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);
?>

2 个答案:

答案 0 :(得分:2)

所以,我已经纠正了你的错误,除非有其他原因导致错误,否则你应该使用以下内容来解决它没有错误。

<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
        }
    });
});

答案 1 :(得分:0)

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

$(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功能。