2012-05-30 105 views
0

新的jQuery的,甚至是新的jQuery的Ajax调用 - 这里是我的问题:jQuery的AJAX请求和PHP

我有一个小的形式 - 电子邮件地址,提交 - 是火到插入电子邮件到PHP文件表。

我要做到以下几点:“成功”

  1. 处理通过Ajax的表单提交,所以没有刷新
  2. 成功写入表后,我想改变提交按钮的文字持续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(); 
}); 

如何使阿贾克斯人评论请求工作(似乎不是)?

在此先感谢!

更新

好吧,jQuery的以下块添加数据表,但是,我的按钮上的文字并没有改变:

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

任何想法呢?

+1

你会得到任何错误?最终输出是什么? –

+0

零错误和PHP文件正常工作,我已经测试了它独立于Ajax请求,并且它成功写入。 –

+0

按钮文字是否被更改? –

回答

3

这里是我的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调用它不成功。

+0

这种方式比POST辅助方法更具可读性 - 在辅助方法中使用此格式有什么缺点像POST和GET? –

+0

不是我所知道的:) – Undefined

+0

好的,我打算使用这种方法进行设置,看看我得到了什么结果。 –

-1

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

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

这是一篇文章,而不是Ajax .... – bpeterson76

+0

使用http请求发送表单。与异步进程相同的东西。并按照代码..不是话语。 –

+0

我提交此提交时出错:缺少:属性编号后 http://localhost/startupwinnipeg.htm 第59行 –

1

你实际上没有发送任何数据到服务器。您需要使用$.post的'data'参数发送您的数据。

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

这有助于获得ajax请求来完成,但是,HTML按钮不会更改? –

+0

您可以尝试打开您的网络面板并确保请求成功完成。另外,尝试在$ .post的成功回调中添加一个'console.log('success');'来查看是否实际调用了成功函数。 –

0

不确定,但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; 
});