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()ましたが、それでも何も思いつきませんでした。

4

5 に答える 5

2

ajaxが完了する前に入力の値を取得しようとしているようです。に変更async: "false",する 必要がありますasync: false

于 2012-10-24T02:49:01.037 に答える
1

試しました$("#users").val()か?

この.val()メソッドは、入力、選択、テキスト領域などのフォーム要素の値を取得(または設定)します。を使用して選択したオプションにアクセスするのではなく、選択した要素で直接使用できますoption:selected

于 2012-10-24T02:49:48.807 に答える
1

それが役立つ場合はこれを試してください

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

これは私のために働きます。

于 2012-10-24T02:50:18.850 に答える
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 );
    });
  };
});
于 2012-10-24T02:57:30.660 に答える
0

やってみました

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

これはinnerHTMLのように機能しますか?お役に立てれば。

于 2012-10-24T02:47:04.627 に答える