2012-10-24 76 views
2

我有一个从数据库获取填充的<select>值:获取的动态填充选择

$(function(){ 
    $.ajax({ 
     type: "GET", 
     url: "lib/deleteuser.getusernames.php", 
     async: "false", 
     success: function(response){ 
      $("#users").append('<option>' + response.split(",").join("</option><option>") + '</option>'); 
     } 
    }); 
    }); 

(能正常工作的方式)

现在,我试图把价值的<select>并使用它来运行另一个查询,但所有返回的是没有,或'未定义'。

这是我曾尝试:

var username = $("#users option:selected").val(); 
var username = $("#users :selected").val(); 
var username = $("#users option:selected").text(); 
var username = $("#users :selected").text(); 

我明白.val()只得到一个输入的值,但在这种情况下,不选择文本仍算作输入?为了以防万一,我尝试了.text(),但仍然没有任何结果。

+0

@nnnnnn这个返回'null' – Brendan

回答

2

看来你试图在ajax完成之前得到输入值,你应该将async: "false",更改为async: false

+0

完美,谢谢! – Brendan

0

你试过

$('#users option').html(); 

其工作方式的innerHTML?希望这可以帮助。

1

你试过$("#users").val()

.val() method获取(或设置)表单元素的值,包括输入,选择和文本区域。您可以直接在您的select元素上使用它,而不是尝试使用option:selected来选择选项。

1

试试这个,如果它可以帮助

$("#users > option:selected").attr("value") 

这对我的作品。

1

由于undefined表示,它看起来像你的选择器可能在异步GET之前。你可以试试这个,如果你想保留异步行为:

$(function(){ 
    $.ajax({ 
    type: "GET", 
    url: "lib/deleteuser.getusernames.php", 
    success: function(response){ 
     $("#users").append('<option>' + response.split(",").join("</option><option>") + '</option>'); 
     userSelect(); 
    } 
    }); 

    var userVal, 
     userText, 
     userElem; 

    var userSelect = function() { 
    $('#users').change(function(){ 
     userVal = $('option:selected', this).val(); 
     userText = $('option:selected', this).text(); 
     userElem = $('option:selected', this); 
    }); 
    }; 
});