在MVC架构中使用AJAX进行数据库操作

时间:2015-11-28 21:13:27

标签: javascript php jquery ajax model-view-controller

我正在编写项目的后端,在我正在尝试实现的模块中,我需要管理用户,例如,从表Users获取所有数据,并获得与所选用户相关的数据例如,使用输入文本。它还必须能够更新和删除记录。

所以我已经编写了所有函数,但它们必须没问题,但重点是MVC架构。这是我第一次按照这个要求工作而且有点乱。

分别订购:

模型 - 视图 - 控制器 - JS文件

我拥有所有函数 - 我的HTML - PHP函数setter和调用者--Ajax Handler

使用这种结构,让我们检查一下代码:

模型(从用户查询中选择*)

public function listUsers(){ //check this

        $result = $db->prepare('SELECT * FROM users');

        if ($result->execute()){

            while ($row = $result->fetch(PDO::FETCH_ASSOC)){

                echo '<table> <tr><td>DNI</td><td>Username</td><td>Firstname</td><td>Lastname</td><td>Email</td><td>Phone</td><td>Address</td><td>City</td><td>Postal</td><td>Province</td><td>CC</td><td>Admin</td><td>Creation</td></tr>';
                echo '<tr><td>' . $row['dni'] . '</td><td>' . $row['username']. '</td><td>' . $row['firstname'] . '</td><td>' . $row['lastname'] . '</td><td>' . $row['email'] . '</td><td>' . $row['phone'] . '</td><td>' . $row['address'] . '</td><td>' . $row['city'] . '</td><td>' . $row['postal'] . '</td><td>' . $row['province'] . '</td><td>' . $row['creditcard'] . '</td><td>' . $row['creation'] . '</td><td>' . $row['isadmin'] . '</td></tr>';

            }

        }else{
            echo 'There was an error during the execution. (listUsers)';
        }

    }

控制器

<?php 
//list user from administrative panel controller 

require "../model/backend.php";


$dbcom = new dbInteraction;

if(isset($_POST['action'])){
    switch($_POST['action']){
        case 'listUsers':
            $dbcom->listUsers(); 
            break;
        default: 
            break;
    } 
}

$dbcom->conclose();

?>

AJAX处理程序 - 它应该是控制器操作的发送者

$(document).ready(function() {
    $("#listUsers").click(function(e){ 
    e.preventDefault(); // prevents submit event if button is a submit
    ajax_route('listUsers'); 
    }); 


    function ajax_route(action_requested){ 
        $.post("../controller/umanagement.php", {action : action_requested}, function(data){
            if (data.length>0){ 
                alert("Hoorah! Completed the action requested: "+action_requested); 
            } 
        })
    }
}

最后一个,视图中的按钮,一切都已开始 - 查看

<button id="listUsers">List all users</button>

我一直在阅读stackoverflow中的不同方法来执行此操作,实际上,我正在使用其中一种建议的方法,但它仍然无法正常工作。

是否正确发送/接收了参数?这可能是一个很好的起点。

任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

经过一些检查后,我的最终和正在运行的代码如下:

function op_User(action_requested){
    var username = $('#username').val(); 
    $.ajax({ url: '/youtube/controller/umanagement.php',
     data: {
        action: action_requested,
        username: username
     },
     type: 'post',
     success: function(output) {
        document.write(output);
     },
     error: function(){
        alert('ajax error');
     }

    });
}

就是这样,正如@gskema和@VIDesignz所说,问题是ajax函数中的相对路径。它必须是完整的道路。

谢谢,希望有所帮助