Javascript 如何在全局变量中获取动态选择列表的值?
我试图在全局变量中获取动态填充的选择列表的值。以下是我获取并填写选择列表的方式: My dropdown.js脚本:Javascript 如何在全局变量中获取动态选择列表的值?,javascript,jquery,ajax,getjson,selectlist,Javascript,Jquery,Ajax,Getjson,Selectlist,我试图在全局变量中获取动态填充的选择列表的值。以下是我获取并填写选择列表的方式: My dropdown.js脚本: $(document).ready(function () { $("#slctTable").change(function() { $.getJSON("dropdown_code/get_fields.php?table=" + $(this).val(), success = function(da
$(document).ready(function () {
$("#slctTable").change(function()
{
$.getJSON("dropdown_code/get_fields.php?table=" + $(this).val(), success = function(data)
{
var options = "";
for(var i = 0; i < data.length; i++)
{
options += "<option value='" + data[i] + "'>" + data[i] + "</option>";
}
$("#slctField").html("");
$("#slctField").append(options);
$("#slctField").change();
});
});
});
但当我运行脚本时,我得到的结果是:
但是当我在firebug中复制粘贴代码并运行它时。我得到了我想要的结果。所以当我尝试获取值时,我认为选择列表还没有填满。但是我在这个问题上坚持了很长一段时间,现在我不知道该怎么办。因为是异步的,要解决您的问题,您可以在选择完成时(在getJSON成功结束时)触发
在我的示例中,我使用了这个SLCTFIELD填充的新事件
这是一种不同的方法。另一种可能的解决方案可以基于回调:在异步函数的末尾执行回调函数,就像getJSON一样
我的片段:
$(函数(){
$.getJSON('https://api.github.com/users,success=函数(数据){
var选项=“”;
对于(变量i=0;i
因为是异步的,为了解决您的问题,您可以在选择完成时(在getJSON成功结束时)触发
在我的示例中,我使用了这个SLCTFIELD填充的新事件
这是一种不同的方法。另一种可能的解决方案可以基于回调:在异步函数的末尾执行回调函数,就像getJSON一样
我的片段:
$(函数(){
$.getJSON('https://api.github.com/users,success=函数(数据){
var选项=“”;
对于(变量i=0;i
你说得很对!GET是异步的,可能会在main.js代码完成执行后很长时间内完成。您需要确保您对全局变量的修改以某种方式与回调绑定在一起,以便保证它在以后运行
var options = [];
$("#slctField").change(function()
{
$.getJSON("dropdown_code/get_attributes.php?table=" + $(slctTable).val() ,"field=" + $(slctField).val() , success = function(data)
{
...
//Option 1: Append the values inside your callback.
//Use window.options because you have another local variable options(window.XX calls any global XX)
for(var i = 0; i < data.length; i++)
{
...
window.options.push(data[i]);
}
//Option 2: Basically the same thing as 1, call a function that does the same thing at the end of your callback
populateOptions();
});
});
function populateOptions(){
$('#slctField > option').each(function(){
options.push(this.value);
});
}
var选项=[];
$(“#slctField”).change(函数()
{
$.getJSON(“dropdown_code/get_attributes.php?table=“+$(slctTable).val(),”field=“+$(slctField).val(),success=函数(数据)
{
...
//选项1:在回调中追加值。
//使用window.options,因为您有另一个局部变量选项(window.XX调用任何全局变量)
对于(变量i=0;ioption')。每个(函数(){
options.push(这个.value);
});
}
有很多其他方法可以做到这一点,只要你保证它在你的GET之后执行。如果你有任何问题,发表评论。小心选项的范围,因为你有多个变量命名选项(或者考虑不同的名字,这样你以后就不会混淆了)。GET是异步的,可能会在main.js代码完成执行后很长时间内完成。你会想让苏
var options = [];
$("#slctField").change(function()
{
$.getJSON("dropdown_code/get_attributes.php?table=" + $(slctTable).val() ,"field=" + $(slctField).val() , success = function(data)
{
...
//Option 1: Append the values inside your callback.
//Use window.options because you have another local variable options(window.XX calls any global XX)
for(var i = 0; i < data.length; i++)
{
...
window.options.push(data[i]);
}
//Option 2: Basically the same thing as 1, call a function that does the same thing at the end of your callback
populateOptions();
});
});
function populateOptions(){
$('#slctField > option').each(function(){
options.push(this.value);
});
}