1

I have trouble to pass radio button value by using $.post can anyone help me find out the problems?

i got Undefined index:gender

<?php
    $gender = $_POST['gender'];    
    if (!$gender) {
        echo $gender;
    }    
?>

<script type="text/javascript">
    function get(){
        $('#error').hide();

        $.post(
            'signup.php', 
            { gender:signup.gender.value },
            function(output){
                $('#error').html(output).fadeIn(100);
            }
        )       
    }
</script>

<form name="signup">
    <input class="radio" type="radio" name="gender" value="male"/> Male<br/>
    <input class="radio" type="radio" name="gender" value="female"/> Female
    <input type="button" value="submit" onclick="get();" />
</form>

<div id="error"></div>
chien pin wang
  • 559
  • 1
  • 4
  • 15

4 Answers4

3

Try changing this line:

{ gender: signup.gender.value }

To this:

{ gender: $('.radio').val() }

Of if you wish to keep it as vanilla javascript, you need to explicitly use the forms collection:

{ gender: document.forms['signup'].gender.value }
Rory McCrossan
  • 331,213
  • 40
  • 305
  • 339
0

You can use jquery serialize for forms:

//Form data:
var aData = $('#formID').serializeArray();
//Create param string:
var sSend = $.param(aData);
//Call ajax:
$.post('signup.php', sSend, function(sData){
   ...
});

or for the value:

$('input[name=gender]:checked').val();

and in your php better:

$gender = isset($_POST['gender']) ? $_POST['gender'] : '';
Ilyssis
  • 4,849
  • 7
  • 24
  • 30
0

Try this...

{ gender: $('.radio [name="gender"]').val() }

Greetings.

MG_Bautista
  • 2,593
  • 2
  • 18
  • 33
0

i just found the answer

$('input:radio[name=gender]:checked').val()

thanks for everyone's help!

chien pin wang
  • 559
  • 1
  • 4
  • 15