jqueryajax函数不工作。Php代码工作正常,没有错误

jqueryajax函数不工作。Php代码工作正常,没有错误,php,jquery,ajax,Php,Jquery,Ajax,我试图使用AJAX,使用PHP代码将表单数据提交到.TXT文件。 结果被添加到文本文件中,但AJAX功能不起作用请告诉我代码中的错误 以下是表格的代码: <div id="page-wrapper"> <h1>AJAX Sign Up Form </h1> <div id="form-messages"></div> <form id="signup" method="post" action="mailer.php"&g

我试图使用AJAX,使用PHP代码将表单数据提交到.TXT文件。
结果被添加到文本文件中,但AJAX功能不起作用
请告诉我代码中的错误

以下是表格的代码:

<div id="page-wrapper">
<h1>AJAX Sign Up Form </h1>
<div id="form-messages"></div>
    <form id="signup" method="post" action="mailer.php">
        <div class="field">
            <input type="email" id="email" name="email" placeholder="Enter Your Email" required>
        </div>

        <div class="field">
            <button type="submit">Send</button>
        </div>

    </form>

AJAX注册表格
发送

以下是jquery(2.1.1)代码

$(文档).ready(函数(){
$(“签名”)。单击(功能(事件){
var mail=$(“#mail”).val();
$.ajax({
键入:“POST”,//HTTP方法POST或GET
url:“mailer.php”//在哪里进行Ajax调用
数据:邮件
})
.done(函数(数据){$('#表单消息').html(数据)})
.fail(function(){$('#form messages').append(“Opps!发生错误。请重试

”)}); }); });
这是mailer.php

<?php
  $email = $_POST["email"];
  $fp = fopen("signup.txt", "a");
  $savestring = "$email\n";
  fwrite($fp, $savestring);
  fclose($fp);
  echo "<h1>Thank You For Subscribing</h1>";
?>

而不是

数据:邮件

使用

数据:{email:mail}

因为,在PHP中,您正在查找
$\u POST[“email”]
,这意味着,
$\u POST
数组有一个名为
email
的键,该键具有一些值

$.ajax({

    type: "POST",
    url: "some.php",
    data: { name: "John", location: "Boston" }

})

    .done(function( msg ) {
    alert( "Data Saved: " + msg );

});
在我的代码中发送上面的数据(作为对象)
谢谢

您可以选择以下选项:

仅当mail是一个包含表单所有输入的对象,如

var mail=newformdata($(this)[0])//在课程提交表单上

$.ajax({
        type: "POST", // HTTP method POST or GET
        url: "mailer.php", //Where to make Ajax calls
        data: mail 
        })
        .done (function(data) { $('#form-messages').html(data) })
        .fail (function()  { $('#form-messages').append("Opps!An Error Occured.Try Again</p>")});
$.ajax({
键入:“POST”,//HTTP方法POST或GET
url:“mailer.php”//在哪里进行Ajax调用
数据:邮件
})
.done(函数(数据){$('#表单消息').html(数据)})
.fail(function(){$('#form messages').append(“Opps!发生错误。请重试

”)});
如果您想通过ajax将单个变量发送到php,那么将数据赋予其键,这样您就可以通过该键在php中访问它,如下所示

 $.ajax({
            type: "POST", // HTTP method POST or GET
            url: "mailer.php", //Where to make Ajax calls
            data: "mail=" + mail,
            })
            .done (function(data) { $('#form-messages').html(data) })
            .fail (function()  { $('#form-messages').append("Opps!An Error Occured.Try Again</p>")});
$.ajax({
键入:“POST”,//HTTP方法POST或GET
url:“mailer.php”//在哪里进行Ajax调用
数据:“邮件=”+邮件,
})
.done(函数(数据){$('#表单消息').html(数据)})
.fail(function(){$('#form messages').append(“Opps!发生错误。请重试

”)});
表单代码中缺少按钮id…

我这样做仍然不起作用。将页面定向到mailer.phpad event.preventDefault()后,将在上显示成功消息;在发送ajax之前,将其添加到js代码中request@smith09您能为我们制作一个JSFIDLE演示吗?现在问题已经解决了,我忘了将id添加到按钮,以将clickwhere is输入字段绑定到
id=“sign\u btn”
?它将如何绑定点击事件?你说不工作是什么意思?@GBD omg!你说得对。那是我犯的一个愚蠢的错误。问题现在已解决。谢谢问题已解决,添加了id=“sign\u btn”到按钮以绑定单击
 $.ajax({
            type: "POST", // HTTP method POST or GET
            url: "mailer.php", //Where to make Ajax calls
            data: "mail=" + mail,
            })
            .done (function(data) { $('#form-messages').html(data) })
            .fail (function()  { $('#form-messages').append("Opps!An Error Occured.Try Again</p>")});