Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON不使用OnChange事件_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript JSON不使用OnChange事件

Javascript JSON不使用OnChange事件,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我最初编写这篇文章是为了带回一个数据点。我意识到我需要使用onchange事件下拉列表select返回更多字段,并将其更改为使用JSON。它没有返回任何数据。该下拉列表是在页面首次加载时通过PHP动态构建的。我是新手,所以任何帮助都将不胜感激 下拉代码: <p id="dropdown" style="DISPLAY: none" > <?php $query = "call test.spsMSTR_AllCatListBuild"

我最初编写这篇文章是为了带回一个数据点。我意识到我需要使用onchange事件下拉列表select返回更多字段,并将其更改为使用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='getvalthis;'但是您没有列出函数getval。

您的浏览器控制台中是否有错误?另外,如果您使用jquery,我也不太清楚为什么要混合使用普通Javascript;从您的选择中,我将要写的内容-我在浏览器中没有收到任何错误,至少我看不到任何错误。就像我说的,我是新手。如果使用JQuery,混合使用普通Javascript是什么意思?请打开控制台F12。我肯定在大喊错误,比如getjson未定义。是的!!!这成功了!非常感谢你。我还没有足够的声誉,但当我有足够的声誉时,我会投票支持这一点。