2017-04-09 114 views
-3

我想在php mvc项目中实现Ajax,我想用ajax将用户添加到数据库中。 我试图按照YouTube的教程,但不能插入数据,这里是我的index.html页:在php中实现Ajax MVC

<!DOCTYPE html> 
    <html lang="en"> 
    <head> 
    <!-- Required meta tags --> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1,shrink-to-fit=no"> 

    <!-- Bootstrap CSS --> 
    <link rel="stylesheet" href="views/css/bootstrap.min.css" > 
    </head> 
    <body> 
    <div class="container"> 
    <form> 
     <div class="form-group"> 
     <label for="name">Name:</label> 
     <input type="text" class="form-control" id="name" placeholder="Enter Name"> 
     </div> 
     <div class="form-group"> 
     <label for="email">Email:</label> 
     <input type="email" class="form-control" id="email" placeholder="Enter Email"> 
     </div> 
     <button type="submit" onclick="saveData()">Add</button> 
     </form> 
    </div> 

    <!-- jQuery first, then Tether, then Bootstrap JS. --> 
    <script src="views/js/jquery.js"></script> 
    <script src="views/js/bootstrap.min.js" ></script> 
    <script> 
    function saveData(){ 
     var name=$('#name').val(); 
     var email=$('#email').val(); 
     $.ajax({ 
     type: "POST", 
     url: "?controller=pages&action=add", 
     data: "name="+name+"&email"+email, 
     success:function(msg){ 
     alert('Success,ajotuer fil base'); 
    } 
    }); 
    } 
    </script> 
</body> 
</html> 

,这里是我的控制器功能可按:

public function add(){ 
    if (isset($_POST['name']) || isset($_POST['email'])){ 
    echo 'error couldnt retreive inputs'; 
    } 
    else { 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    User::save($name,$email); 
    } 
} 

的user.php的文件

public static function save($name,$email){ 
    $db = Db::getInstance(); 
    $req = $db->prepare("INSERT into user(id,name,email) VALUES ('',?,?)"); 
    $req->bindParam(1,$name); 
    $req->bindParam(2,$email); 
    $req->execute(); 
} 

更新1:加满index.html文件

+1

语法错误在您的PHP中...可以清楚地看到它在语法高亮内的问题代码。也可以通过使用?controller = pages&action = add这种方式将php文件路径用于$ ajax url – charlietfl

+0

中routes.php文件将把请求发送到将处理请求的文件page_controller。 对于PHP错误语法其''不能'字我删除它,但仍然可以插入数据 –

+1

,但你说这是一个HTML页面。不清楚你的mvc如何工作,你正在使用什么框架,或服务器端路由如何工作 – charlietfl

回答

0

我看到两个公关oblems乍一看:

首先,在您的JS代码,你拼错function

success:fucntion(msg){ // <-- fuCNtion should be fuNCtion 
    alert('Success,ajotuer fil base'); 
} 

其次,在你的PHP代码,你也没能逃脱在字符串中的引号。如果您在字符串中使用单引号,要么使用字符串括在双引号或逃避单引号:

if (isset($_POST['name']) || isset($_POST['email'])){ 
    echo 'error couldn\'t retrieve inputs'; // or: 
    echo "error couldn't retrieve inputs"; 
} 

尝试这一点,让我们知道是否可行。

+0

'仍然拼写错误'“function” – charlietfl

+0

仍然是同样的问题。 –

+1

@charlietfl评论不够清楚? :-) – rickdenhaan