2011-05-23 88 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中,你會知道,是沒有得到執行腳本創建日誌。