MVC架构中使用AJAX的DB操作


DB operations with AJAX in MVC architecture

我正在对项目的后端进行编码,在我试图实现的模块中,我需要管理用户,例如,从表users中获取所有数据,还可以使用输入文本仅获取与所选用户相关的数据。它还必须能够更新和删除记录。

所以我已经对所有的函数进行了编码,它们必须是可以的,但是,重点是MVC体系结构。这是我第一次在这种要求下工作,有点乱。

分别订购:

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

在那里我有所有的函数-我的HTML-PHP函数设置器和调用程序-Ajax处理程序

使用此结构,让我们检查代码:

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

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); 
            } 
        })
    }
}

最后一个按钮,所有东西都启动的视图中的按钮-view

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

我一直在stackoverflow中阅读不同的方法来执行这些操作,实际上,我正在使用这些建议的方法之一,但它仍然不起作用。

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

任何帮助都将不胜感激。

经过一些检查,我的最终工作代码如下:

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函数中的相对路径。它必须是完整的路径。

感谢并希望它能帮助