Jquery Ajax Request and PHP


Jquery Ajax Request and PHP

Jquery的新功能,Jquery Ajax调用的更新 - 这是我的问题:

我有一个小表单 - 电子邮件地址提交 - 触发到一个PHP文件,该文件将电子邮件插入到表中。

我想执行以下操作:

  1. 通过 Ajax 处理表单提交,因此无需刷新
  2. 成功
  3. 写入表后,我想将提交按钮的文本更改为"成功!"3秒钟,然后返回具有淡入和淡出效果的"注册"。

这是我的表单代码:

<form action="" id="registerform" name="registerform" method="post" >
    <input type="text" id="email" name="email" value="Email Address" onClick="empty()" onBlur="determine()" />
    <button id="join" type="submit" name="join" onClick="validate()">Sign Up</button>
</form>

这是我通过Jquery处理POST请求的可怕尝试:

$('form').on('submit', function(e) {
    $.post('register.php', function() {
            $('#join').html('Success!')             
    });        
    //disable default action
    e.preventDefault();
});

任何人都可以评论如何使 Ajax 请求工作(似乎不是)?

提前感谢!

更新

好的,以下 Jquery 块将数据添加到表中,但是,我的按钮文本不会更改:

 $('form').on('submit', function(e) {
        $.post('register.php', $("#registerform").serialize(), function() {
            $('#join').html('Success!')             
        });        
    //disable default action
    e.preventDefault();
    });

现在有什么想法吗?

这是我的一个 ajax 调用示例

details = "sendEmail=true&" + $("form").serialise();
$.ajax({
    url: "yourphppage.php",
    type: "post",
    data: details,
    success: function (data, textStatus, jqXHR) {
        if (data == "false") {
            console.log("There is a problem on the server, please try again later");    
        } else {
                //Do something with what is returned
        }
    }
})          

而在服务器端

if (isset($_POST['sendEmail'])) {
  //Do something with the data
}

当然,这只是一个例子,您可能需要更改它以满足您的需求:)

需要注意的一件事是if (data == "false")做什么。在服务器端,我可以echo "false"告诉ajax调用它没有成功。

您实际上并没有向服务器发送任何数据。 您需要使用 $.post 的"data"参数来发送数据。

$('form').on('submit', function(e) {
    $.post('register.php', $(this).serialize(), function() {
        $('#join').html('Success!');             
    });        
    //disable default action
    e.preventDefault();
});

不确定,但是 POST 请求是否发送了任何内容?尝试在 POST 请求中添加数据。

$('form#registerform').submit(function() {
  var email = $(this).find('input[name=email]').val();
  $.post('register.php', {email: email}, function() {
    $('#join').html('Success!');             
  }); 
  return false;
});

在 ajax 调用中将表单数据推送到服务器的位置? 将代码更改为此。

var data = {$("#email").val()};
$('form').submit(data ,function(e) {
    $.post('register.php', function() {
            $('#join').html('Success!')             
    });        
    //disable default action
    e.preventDefault();
});