Значение радиокнопки не передано функции публикации в jquery

Я пытаюсь получить значение от переключателя, скажем, является ли пол мужским или женским. Я сохраняю его в переменной значения, но при передаче в $.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
  });

});

КАК это можно исправить? В чем проблема.


person Kundan Raj    schedule 18.08.2012    source источник
comment
Я не понимаю, когда вы хотите, чтобы POST произошел? при загрузке страницы? по радио щелчок? потому что в этом случае сообщение будет происходить, пока документ читается, независимо от щелчка переключателя   -  person Yaron U.    schedule 18.08.2012


Ответы (3)


Как было предложено, вы можете сделать это двумя способами:

Первый

Объявлено 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
  });

});

Второй

Другой способ - объявить метод post внутри функции click.

    $(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);
    });

Ну, я думаю, это работает в обе стороны. Но первый проще! и лучше.

person Rajeev Kumar    schedule 19.08.2012
comment
да, это работает в обоих направлениях, но я тоже считаю, что первый лучше. Хотя другие тоже имеют то же самое, но вы дали два, так что я принимаю ваше - person Kundan Raj; 20.08.2012

$("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);
person Community    schedule 18.08.2012
comment
Хороший улов. Добро пожаловать в stackoverflow.com. - person Vins; 18.08.2012

Поместите переменную 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
    });
});
person Sang Suantak    schedule 18.08.2012