我正在尝试使用ajax调用,使用jquery on change方法从mysql数据库中获得的值填充下拉列表。然后,我尝试使用下拉框中的值将数据显示为更改事件的输出,但我不知道该怎么做。有人可以指出正确的方向吗?
<jquery>
$(document).ready(() => {
window.onload = ajaxCallback;
function ajaxCallback(data) {
var data;
var myOptions;
var output;
$.ajax({
url: 'http://localhost:5000/alldata',
type: 'GET',
datatype: 'json',
success: (data) => {
//$.each(data, function (index, value) {
var output = [];
$.each(data, function(key, value) {
output.push('<option value="'+ key +'">'+ value.Station
+'</option>');
});
$('#dmenu').html(output.join(''));
}
})
}
});
$('#dmenu').on('change', function() {
alert( this.value );
//alert($(this).find(":selected").value());
function stationData(data) {
var stationName = $(this).value();
//var stationName = $(this).find(":selected").value()
$.ajax({
url: 'http://localhost:5000/alldata',
method: 'POST',
data: {
station:stationName
},
success: (data) => {
$.each(data, function (i) {
data[i]
//console.log(i);
var station_loopOp = '';
//console.log(JSON.stringify(data[i].Station));
station_loopOp += '<li>ID: ' + JSON.stringify(data[i].ID) + '</li>' +
'<li>Station: ' + JSON.stringify(data[i].Station) + '</li>'
+
'<li>Address: ' + JSON.stringify(data[i].Address) + '</li>'
+
'<li>Sales: ' +
JSON.stringify(data[i].Monthly_CStore_Sales) + '</li>' +
'<li>Operator: ' + JSON.stringify(data[i].Operator) +
'</li>' +
'<li>Top SKU: ' + JSON.stringify(data[i].Top_SKU) + '</li>'
+
'</<li>' + '<br/>';
});
$('#optionT').html(station_loopOp);
}
});
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<h3>Drop down Menu</h3>
<select id="dmenu">
<option selected = "selected" id="opt">Choose your station</option>
</select>
<div id="optionT"></div>
答案 0 :(得分:0)
在我看来,如果菜单中只有一个选项,那么“更改”事件将永远不会触发。当页面准备就绪或关闭其他元素或事件时,我将运行ajax调用。
第二,您的optionVal
变量什么也不做。
您需要在ajax回调中执行更多类似的操作。
function ajaxCallback(data) {
var myOptions;
$.each(data, (i, v) = {
var anStation = Station(v);
myOptions.push(
$("<option>")
.prop('name', anStation.name)
.prop('value', anStation.id));
})
$("#dmenu").append(myOptions);
}