javascript - JSON 不适用于 OnChange 事件

标签 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);
?>

最佳答案

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

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

关于javascript - JSON 不适用于 OnChange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29214977/

相关文章:

javascript - Angulars $http.post 基本原理

jquery - 如何使用 Ajax、Rails 3 和 Devise 创建注册表单?

javascript - react router 中的 hashHistory 和 browserHistory 有什么区别?

javascript - 提交前禁用空文本字段

javascript - 允许用户安全地将 HTML 保存到数据库吗?

php - FOSUser的注册表自定义: datas not saved in DB

php - 如何使用名称从首字母 A - D 开始的 sql 显示结果

php - 通过php将带撇号的字符串插入数据库

javascript - 单击分页 Bootstrap 表时不显示日期选择器

javascript - 每小时循环到明天同一时间