Невозможно отправить форму, используя Ajax - PullRequest
1 голос
/ 11 декабря 2011

Я пытаюсь отправить форму и обработать ее с помощью php.Вот что я делаю (это упрощено, но все еще не работает ...)

вот мой индекс:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
    <script>
        $().ready(function(){
        $("#addemail").click(function(){
        var email=$("#email").val();
        $.ajax({
            type: "POST",
            url: "addemail.php",
            data: "email="+email,
            success: function(){
                console.log("success! ")
                },   
            error:  console.log("error!! ")    
            });        
        }); 
    });
    </script>
</head>
<body>        
    <div id="wrapper">        
          <h2>Mon form...</h2>
          <form action="">
              <table>
                <tr><td><label>Email:</label></td>
                    <td><input type="text" id="email" name="email" /></td>
                    <td><input type="submit" id="addemail" value="Add" /></td>
                </tr>  
               </table>                   
          </form>               
    </div>
</body>

Вот мой php-файл:

<?php
$connection =  mysql_connect('localhost', 'XXX', 'XXX');
$db=  mysql_select_db('mydb', $connection);
$email= $_REQUEST["email"];
$query  = "INSERT INTO users(email) VALUES ('$email')";
mysql_query($query);

?>

Что я делаю неправильно (возможно, не php, потому что, если я даю это действию в моей форме, оно работает, но в php не ajax ...) Спасибо заранее

Ответы [ 3 ]

1 голос
/ 11 декабря 2011
 $email= $_REQUEST["email"];
 $query  = "INSERT INTO users(email) VALUES ('$email')";
 mysql_query($query);

Уязвимость SQL-инъекций!

 $email= mysql_real_escape_string(stripslashes($_POST["email"]));

Кроме того, вам не нужно добавлять точки с запятой?

 success: function(){
     console.log("success!");
 }, 

И помещать ошибку в анонимную функцию?

 error: function(){
     console.log("error!");
 }

Также ваша форма должна быть максимально полной:

<form id="formContact" method="post" action="addemail.php">
    <input type="text" name="email" id="email" />
    <input type="submit" id="addemail" value="Add"/>
</form>
0 голосов
/ 11 декабря 2011

Я не уверен, что это проблема, но вы можете попробовать ... document неправильно в выражении ready и также дает данные в формате хэша, а также вы должны написать функцию для ошибки.Пожалуйста, попробуйте ниже код:

<script type="text/javascript">
        $(document).ready(function(){
        $("#addemail").click(function(){
        var email=$("#email").val();
        $.ajax({
            type: "POST",
            url: "addemail.php",
            data: {
            email:email
            },
            success: function(){
                console.log("success! ")
                },   
            error:  function(){
              console.log("error!! ")    }
            });        
        }); 
    });
    </script>
0 голосов
/ 11 декабря 2011

Попробуйте, я использую это и смотрю на ваш код в вашей форме, как будто вы пропустили свой метод = post, также в вашем php вы используете $ _POST not request ..

$(document).ready(function () {
        $("#formContact").submit(function(event) {
        /* stop form from submitting normally */
        //event.preventDefault(); 
        $.post("sendemail.php", $("#formContact").serialize());
        return false;
    });
});


<form id="formContact" method="post" action="/">
<input type="text" name="name" id="name" />
<input type="submit" name="submit" value="send"/>
</form>
...