[英]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.