2011-12-11 90 views
1

我正在尝试提交表单并使用php进行处理。这里是我做的(它简化,但仍然没有工作...)无法使用Ajax提交表单

这里我的索引:

<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 not ajax ...) Thanx提前

+1

定义'not working'。你有错误吗?控制台告诉你什么? – PeeHaa

+2

您有一个SQL注入漏洞。 – SLaks

+0

@PeeHaa:呃,是的,我只有'错误!!'登录控制台...我怎样才能更好地调试jQuery? – blop

回答

1
$email= $_REQUEST["email"]; 
$query = "INSERT INTO users(email) VALUES ('$email')"; 
mysql_query($query); 

SQL注入漏洞!

此外,你不需要添加分号吗?

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

为什么'stripslashes'? – SLaks

+0

http://stackoverflow.com/questions/1522313/php-mysql-real-escape-string-stripslashes-leaving-multiple-slashes如果魔术引号打开,那么你可能会以可怕的\\斜杠链结束。 –

+0

Thanx,但如果我做的行动=“addemail.php”et在这个页面上(这是空白的...),并不执行ajax ...为什么? – blop

0

试一试,我用这个,看看你的代码在你的表单中看起来像你的你的方法= post,也在你的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> 
+0

那么,有改进,但仍然不工作,因为我想...如果我把PHP的形式的目标,它会在这个页面上,而不是执行Ajax ...当我不给任何动作,现在它写入数据库但我看不到我的日志,当我把一个断点后,阿贾克斯... – blop

0

我不知道这是否是问题,但你可以给一个尝试.. document在准备发言misssing,也给散列格式的数据,你也应该写一个错误的函数。请尝试以下代码:

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