2011-05-23 91 views
3

以下代码有什么问题?为什么Ajax表单提交不起作用?

警报返回成功,但没有添加到表中。形式:

<form id="Form_1" name="theform" method="post" action=""> 
    <label for="email" class="emailLab">Email * </label> 
    <input type="email" name="email" id="email_id" autocorrect placeholder="Email" value="" /> 
    <label for="phone">Phone </label> 
    <input type="tel" name="phone" id="phone_id" autocorrect placeholder="Phone" /> 
    <input type="image" src="images/btn_enter.png" height="26" width="147" id="submit" data-inline="true" data-role="none" /> 
</form> 

在提交时我调用这个函数:

function serverDB(){ 
    // Define variables from input 
    var vEmail = document.getElementById('email_id').value; 
    var vPhone = document.getElementById('phone_id').value; 

    var theData = 'email=' + vEmail + '&phone=' +vPhone; 
    alert (theData); 

    $.ajax({ 
     type: "POST", 
     url: "process.php", 
     data: theData, 
     success: function(){ 
      alert ("Success"); 
     } 
    }); 
} 

而且PHP代码:

<? 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    mysql_connect("host", "user", "password") or die(mysql_error()); 
    mysql_select_db("sandbox_itouch") or die(mysql_error()); 
    mysql_query("INSERT INTO `data` (email, phone) VALUES ('$email','$phone')"); 
?> 
+2

这与您的问题无关,但可以考虑使用[PDO](http://www.php.net/PDO)或[mysqli](http://www.php.net/mysqli)您。使用预先准备好的语句来防止[SQL注入攻击](http://en.wikipedia.org/wiki/SQL_injection) – Callum 2011-05-24 02:18:05

回答

1

你的“&手机”后,在这条线上缺少一个“=”:

var theData = 'email=' + vEmail + '&phone' +vPhone; 

这可能是一个错字。

+0

哎呀谢谢,这是一个错字..不是那样在我的真实代码中,而不是问题..我更新了我的问题 – Zac 2011-05-23 23:05:39

+0

其中..其中约10个其他问题,这确实成为其中的一个......谢谢! – Zac 2011-05-24 17:21:06

+0

这些小愚蠢的错误几乎总是让我;)不客气! – Jibou 2011-05-24 17:27:26

0

添加记录到你的代码,看看你的服务器端脚本即使在运行,它到底有多远,它得到的数据以及它看到的错误。

+0

感谢您的输入...您可以提供一个noob更多的帮助吗?我改变了我的PHP有一个$ con变量的mysql_connect,然后如果(!$ con) {die('Could not connect:'.mysql_error());}你能告诉我我应该添加哪些其他日志记录? – Zac 2011-05-24 00:33:18

+1

添加error_log(“* 001”);和error_log(“* 002”);等等每一行之间。然后看你的错误日志(找到它!)并查看执行的内容。 – dkamins 2011-05-24 02:37:48

0

试着改变你的数据类型,以JSON或明确指定数据类型张贴时:

var theData = '{ email:' + vEmail + ', phone:' + vPhone + '}' ; 

$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: theData, 
    success: function(){ 
     alert ("Success"); 
     $().innerHTML = 
    } 
}); 
+0

感谢您的想法..试过,但仍然没有运气 – Zac 2011-05-23 23:08:48

1

检查$ _POST值达到你的脚本和您的MySQL连接工作正常,你的列,表名与数据库匹配。

你可以这样

$fh = fopen('log.txt', 'w'); 
fwrite($fh, print_r($_POST, true)); 
fclose($fh); 

如果没有创建log.txt中,你会知道,是没有得到执行脚本创建日志。