0

性別が男性か女性かというラジオボタンから値を取得しようとしています。値変数に保存しますが、 $.post に渡している間は機能しませんか? コードスニペットは -

$(document).ready(function() {
  // Handler for .ready() called.

  $("input:radio[name=gender]").click(function() {
    var value = $(this).val();
    alert (value);
  });
  alert (value);
  $.post("gendersearch.php", {queryString: ""+value+""}, function(data) { // Do an AJAX call
    $('#suggestions').fadeIn(); // Show the suggestions box
    $('#suggestions').html(data); // Fill the suggestions box
  });

});

これはどのように修正できますか?何が問題ですか。

4

3 に答える 3

3
$("input:radio[name=gender]").click(function() {
        var value = $(this).val();
        alert (value);
    });
      alert (value);

変数のスコープを確認してくださいvalue外部で定義して、次のようにしてみてください

var value = '';
  $("input:radio[name=gender]").click(function() {
            value = $(this).val();
            alert (value);
  });
  alert (value);
于 2012-08-18T08:17:49.663 に答える
1

変数をイベントのvalue外に置きます。click

$(document).ready(function() {
    // Handler for .ready() called.
    var value = "";
    $("input:radio[name=gender]").click(function() {
        value = $(this).val();
        alert(value);
    });
    alert(value);
    $.post("gendersearch.php", {
        queryString: "" + value + ""
    }, function(data) { // Do an AJAX call
        $('#suggestions').fadeIn(); // Show the suggestions box
        $('#suggestions').html(data); // Fill the suggestions box
    });
});
于 2012-08-18T08:17:35.210 に答える
1

提案されているように、これを2つの方法で行います-

最初の1つ

var value = '';以下のコードのように、クリック関数のすぐ上で宣言されています

$(document).ready(function() {
  // Handler for .ready() called.
   var value="";
  $("input:radio[name=gender]").click(function() {
   value = $(this).val();
    alert (value);
  });
  alert (value);
  $.post("gendersearch.php", {queryString: ""+value+""}, function(data) { // Do an AJAX call
    $('#suggestions').fadeIn(); // Show the suggestions box
    $('#suggestions').html(data); // Fill the suggestions box
  });

});

2番

別の方法は、クリック関数内で post メソッドを宣言することです

    $(document).ready(function() {
      // Handler for .ready() called.

      $("input:radio[name=gender]").click(function() {
        var value = $(this).val();
        alert (value);
 $.post("gendersearch.php", {queryString: ""+value+""}, function(data) { // Do an AJAX call
        $('#suggestions').fadeIn(); // Show the suggestions box
        $('#suggestions').html(data); // Fill the suggestions box
      });
      });
      //alert (value);
    });

まあ、私はそれが両方の方法で機能すると思います。しかし、最初のものはより簡単です!そしてより良い。

于 2012-08-19T11:13:13.907 に答える