foshoeiyyy
foshoeiyyy

Reputation: 471

Jquery post method

I have a jquery post method that sends name , password and email to register.php

function postData()
{
    thisBtn = $(this); 
    parent = $(this).parent(); 
    name = parent.data('name'); 
    password = parent.data('password'); 
    email =parent.data('email');
    $.post('register.php', {name: (name), password: (password), email: (email)},     function(data) ;
    parent.next('#message').html(data);
}

The button that performs the function onclick:

<button onclick = 'postData()' class='regular' name='save'>

However nothing seems to be happening when the button is cicked

Upvotes: 0

Views: 1010

Answers (6)

Vivek
Vivek

Reputation: 641

You could try this :

$(document).ready(function(){
     var $this = $('id_of_button');
     $this.click(function(){
            //ajax logic here
            $.ajax({
              type: 'POST',
              url: url,
              data: data,//data to send to serverside
              success: success, //function to call on success
              dataType: dataType//datatype eg.text,json etc.
            });
     });
});

Upvotes: 0

Dave
Dave

Reputation: 4412

Use jQuery to bind to the button click as well if you want things to work properly. (EDIT: also, let's use a non-deprecated element)

<input type='button' class='regular' name='save' id='btnPost' value='Post' />

Javascript:

$(document).ready(function() {
    $("#btnPost").on("click", function() {
        var thisBtn = $(this); 
        var parent = thisBtn.parent(); 
        // Replacing this by serializing the parent form -
        // not sure what parent.data is going to give without seeing the rest
        // of the html
        // name = parent.data('name'); 
        // password = parent.data('password'); 
        // email =parent.data('email');
        $.post('register.php', thisBtn.closest("form").serialize(),          
            function(data) {
                parent.next('#message').html(data);
            });
        });
    });
});

Upvotes: 0

Sam Arul Raj T
Sam Arul Raj T

Reputation: 1770

Send the post data like this you will get proper output

name = 'demo'; password = '123456'; email = '[email protected]';

      $.post('register.php',{ 'name': name, 'password': password, 'email': email},function(html){

                                alert(html);     
     },"html");

//register.php

echo $_POST['name'];

Upvotes: 0

Manse
Manse

Reputation: 38147

you have 2 options ...

either pass and object in the onclick :

<button onclick='postData(this)' class='regular' name='save'>

or attach the click handler using jQuery - preferred method when using jQuery :

$('input[name="save"]').click(function() {
   // your post code here
}};

there would then be no need for the onclick='postData(this)'

Upvotes: 0

calebds
calebds

Reputation: 26228

This syntax looks mangled

$.post('register.php', {name: (name), password: (password), email: (email)},     function(data) ;
    parent.next('#message').html(data);
// no {} for function, no closing ) for $post, and premature ;

Try

$.post('register.php', {name: (name), password: (password), email: (email)}, function(data) {
    parent.next('#message').html(data);
});

Upvotes: 1

Quentin
Quentin

Reputation: 944320

Since you call postData with no associated object, inside the function this is the same as window so none of the elements you access are the ones you expect.

Don't use intrinsic event attributes, bind your handlers using JavaScript. Since you are already using jQuery you should use the methods it provides for that.

Upvotes: 3

Related Questions