Javascript JSON不使用OnChange事件
我最初编写这篇文章是为了带回一个数据点。我意识到我需要使用onchange事件下拉列表select返回更多字段,并将其更改为使用JSON。它没有返回任何数据。该下拉列表是在页面首次加载时通过PHP动态构建的。我是新手,所以任何帮助都将不胜感激 下拉代码: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"
<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未定义。是的!!!这成功了!非常感谢你。我还没有足够的声誉,但当我有足够的声誉时,我会投票支持这一点。