2017-08-29 130 views
0

我有一些信息發佈到我的數據庫的問題。我有其他信息在我的javascript中通過ajax調用發佈到我的數據庫中,並且它沒有問題,但是,我不知道這部分代碼出了什麼問題。它拒絕發佈到數據庫。我想發佈它,看看有沒有人發現我不會阻止它進入數據庫的東西。有趣的是,ajax調用正在爲我的ajax調用在我的.done function(data)內部進行,但沒有任何內容進入我的數據庫。Ajax表單數據達到.done(函數(數據)),但沒有發佈到數據庫的數據

下面我發佈,我認爲這是相關

$('#form-reg').on('submit', function(){ 
 
     // serialize the form 
 
     var formData = $(this).serialize(); 
 
     $.ajax({ 
 
      type  : 'POST', 
 
      url   : 'register.php', 
 
      data  : formData, 
 
      success: function(data){ 
 
      console.log(data), 
 
     }, 
 
     error: function(err){ console.log(err) 
 
     }; 
 
     }) 
 
     .done(function (data) { 
 
      console.log("lo"); 
 
      document.getElementById('form-reg').reset(function(){ 
 
       alert("signed up completed"); 
 
      }); 
 
     }) 
 
     .fail(function (error) { 
 
      alert("POST failed"); 
 
     }); 
 
     return false; 
 
    });
/*mysqli_connect.php -- note this is just an old file name. not important*/ 
 
<?php 
 
$dsn = 'mysql:dbname=test;host=127.0.0.1'; 
 
$user = ''; 
 
$password = ''; 
 

 
try { 
 
    $dbh = new PDO($dsn, $user, $password); 
 
} catch (PDOException $e) { 
 
    echo 'Connection failed: ' . $e->getMessage(); 
 
} 
 
?> 
 

 
/*register.php*/ 
 
<?php 
 
require 'mysqli_connect.php'; 
 
if((isset($_POST['name']) && !empty($_POST['name']))|| 
 
    (isset($_POST['email']) && !empty($_POST['email']))){ 
 

 
    $sth = $dbh->prepare('INSERT INTO test_table (comment) VALUES(?,?);'); 
 
    $name = $_POST['name']; 
 
    $email = $_POST['email']; 
 

 
    $sth->execute(Array($name, $email)); 
 

 
} 
 
else{ 
 
    echo 'error no comment entered'; 
 
} 
 
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"> 
 

 
<div id = "register-container"> 
 
    <form id = "form-reg"> 
 
     <label id ="x" for="name">Name</label> 
 
     <input id="name-reg" name="name"></br> 
 
     <label id = "y" for="email">Email</label> 
 
     <input id="email-reg" name="email"></br> 
 
     <input type="submit" value="submit" id = "submit-reg"> 
 
    </form> 
 
    </div>

所有代碼。如果我錯過了一些可以隨意請求這段代碼的東西。

+0

添加成功和錯誤回調到AJAX選項對象。這樣你就會知道發生了什麼事。 –

+0

如果你看一看,我的''.done'函數裏面有一個回調,回調不起作用。所以不知道是否添加另一個會工作。這是一個單獨的問題。我從來沒有能夠在我的'.done'中觸發回調。 – Jengo

+0

$就({ 類型: 'POST', URL: 'register.php', 數據:FORMDATA, 成功:功能(數據){ 的console.log(數據), }, 錯誤:函數(err){ console.log(err), } }) –

回答

0

看來問題是:

INSERT INTO test_table (comment) VALUES(?,?); 

爲什麼會出現一個col「(comment)」,而在VALUES中有兩個(?,?)佔位符?表「test_table」中有哪些列?我想查詢可能是這樣的:

INSERT INTO test_table (name, email) VALUES(?,?); 
0

我認爲你的問題在於你的PHP。

$sth = $dbh->prepare('INSERT INTO test_table (comment) VALUES(?,?);'); 
$name = $_POST['name']; 
$email = $_POST['email']; 

您的SQL不知道問號(?)是什麼,除非您給他們一個值。請看下面的例子:

$name = $_POST['name']; 
$email = $_POST['email']; 

$sth = $dbh->prepare('INSERT INTO test_table VALUES(?,?);'); 
$sth->bind_param('ss', $name, $email); // you must bind the values you wish to insert 
$sth->execute(); 

更多有關bind_param看看PHP文檔: http://php.net/manual/en/mysqli-stmt.bind-param.php

+0

感謝您的快速反應,我給了它一個旋風,但沒有運氣。我一定會閱讀這些文檔! – Jengo