2014-11-16 3 views
-2

Я пытался использовать AJAX для отправки данных формы в файл .TXT с использованием PHP-кода.
Результаты добавляются в текстовый файл, но функция AJAX не работает.
Пожалуйста, дайте мне знать об ошибке в моем коде.Функция jQuery Ajax не работает. Php-код работает без ошибок

Вот код для формы:

<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> 

Вот JQuery (2.1.1) код

$(document).ready(function() { 
    $("#sign_btn").click(function(event){ 
     var mail = $("#mail").val(); 

     $.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>")}); 


    }); 

}); 

Вот это 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>"; 
?> 
+1

где поле ввода с идентификатором 'id =" sign_btn "'? Как он будет связывать событие click? – GBD

+0

Что вы имеете в виду, если не работаете? –

+0

@GBD omg! Ты прав. Это была глупая ошибка на моем конце. Проблема решена сейчас. – smith09

ответ

2

Вместо

data: mail

использование

data: {email: mail}

потому, что в PHP вы ищете $_POST["email"], что означает, $_POST массив имеет ключ с именем email с некоторым значением.

+0

Я все еще не работал. Сообщение об успешном завершении отображается после того, как страница направлена ​​на mailer.php – smith09

+0

add event.preventDefault(); к вашему js-коду перед отправкой запроса ajax – David

+0

@ smith09 Можете ли вы сделать демо-версию jsfiddle для нас? – thecodeparadox

0
$.ajax({ 

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

}) 

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

}); 

Отправить данные (как объект) выше в моем коде Спасибо

0

Вы можете пойти с любым на следующие:

только если почта является объектом, который имеет все ввод формы, как

var mail = new FormData($(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>")}); 

если вы хотите послать одну переменную в 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>")}); 
+0

Спасибо, проблема решена, добавлена ​​id = "sign_btn" к кнопке для привязки клика – smith09

0

Кнопка ид через AJAX отсутствует в виде кода ...

+0

Добавлен идентификатор, код работает сейчас , – smith09

Смежные вопросы