无法使用Ajax提交表单

时间:2011-12-11 16:21:25

标签: jquery ajax forms submit

我正在尝试提交表单并使用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);

&GT;

我做错了什么(可能不是php,因为如果我在我的表单中给它行动它可以工作但是在php而不是ajax ...) Thanx提前

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

试一试,我使用这个并在你的表单中查看你的代码看起来像你错过了你的方法=帖子,也在你的php中使用$ _POST而不是请求..

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

答案 2 :(得分:0)

我不确定这是否是问题,但你可以尝试.. document在准备语句中误导并且还以散列格式提供数据,你也应该编写一个错误函数。请尝试以下代码:

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