簡體   English   中英

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

暫無
暫無

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

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