【问题标题】:DB operations with AJAX in MVC architecture在 MVC 架构中使用 AJAX 进行数据库操作
【发布时间】:2016-03-02 18:50:14
【问题描述】:

我正在对项目的后端进行编码,并且在我尝试实现的模块中,我需要管理用户,例如,从表 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 中阅读不同的方法来执行此操作,实际上,我正在使用这些建议的方法之一,但它仍然无法正常工作。

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

任何帮助将不胜感激。

【问题讨论】:

  • 看我在 MVC 中不好,但我知道它从索引页面开始,所以你可以尝试输入完整的 url 而不是 ../controller/umanagement.php .. 试试
  • 动作序列看起来正确... ajax 路径是否正确?你连接到数据库了吗?您应该尝试调试控制器本身,如果有请求,请回显一些内容。不过,您仍然缺少 MVC 中的“V” :)
  • @Mohamed-Yousef 我之前已经尝试过自己询问但没有。
  • @gskema ajax 路径是什么意思?如果您指的是我发送数据的路径(后端),是的。我在那里做了一些调试,但它没有打印任何东西,即使我在 if 语句之前的开头放了一些回声。这就是我来的原因。很奇怪。
  • 您的 AJAX URL 必须是控制器的完整路径......即 www.mysite.com/controller/method

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


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

谢谢,希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多