Jquery Ajax和PHP MVC模型

5
我正在使用Jquery和PHP构建一个小型应用程序。Jquery(index.html)为用户添加表单字段并将其发送到PHP脚本(pdo.php)。PHP脚本从数据库中获取值,并对用户给定的值和来自数据库的值进行一些计算。总和返回到表单页面。
index.html <-> pdo.php 因此,我试图理解PHP MVC模式,我的问题是:
a.)在这种情况下是否有意义。
b.)如果有意义,哪个部分是什么。 index.html -> 视图;pdo.php -> 模型;控制器 -> ?
感谢您的帮助,
托尼
剪裁:jquery ... index.html
$(document).ready(function(){
    $("#buttonAjax").click(function(){
        var name = encodeURI($("#name").val());

            $.ajax({
                type: "POST",
                url: "pdo.php",
                data: "name="+name,
                success: function(data){
                    var json = $.parseJSON(data);
                    $("#output").html(json.summe);
                    talk(json.say);
                }
            });

    });

    function talk (say){
        jQuery.noticeAdd({text: say,stay: false});
    }

     });

pdo.php

/* DB Connection */
    $strDbLocation = 'mysql:dbname=test;host=localhost';
    $strDbUser = 'root';
    $strDbPassword = 'root';

    try{
        $objDb = new PDO($strDbLocation, $strDbUser, $strDbPassword);
    }
    catch (PDOException $e){
        echo 'Failure: ' . $e->getMessage();
    }


/* Fetch POST Data */
    $id = $_POST['name'];


/* Build query */
    $dbSelect =  $objDb->prepare("SELECT Age,Name FROM Benutzer WHERE id = :id");
    $dbSelect -> setFetchMode(PDO::FETCH_ASSOC);  
    $dbSelect -> bindParam('id', $id);
    $dbSelect -> execute();


/* Output + Calculate */    
    while($row = $dbSelect->fetch()) {  
        $total =  $row['Age'] / 100 . "<br />";
    }  


/* Return to User */
    if(!empty($total)){ 
        $ret = Array("summe" => "Summe: " . $total, "say" => "all right");
        echo json_encode($ret); }
    else{
        $ret = Array("summe" => "Nothing for you",  "say" => "nothing for you");
        echo json_encode($ret); 
    }

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller - PeeHaa
2
https://dev59.com/GW025IYBdhLWcg3wr4B6#5864000 - PeeHaa
你应该研究真正的预处理语句,而不是模拟的语句。防止SQL注入的最佳方法 - PeeHaa
PeeHaa,感谢你的注入技巧。这对我来说是新的。 - Anatol
2个回答

3
在标准的MVC Web应用程序中,路由与控制器操作相匹配。这些控制器操作可能与模型交互[进而与数据库交互],或执行一些其他与模型无关的计算,并呈现视图。很明显,index.html是视图。我认为你把控制器和模型捆绑在了pdo.php中。
我真的推荐PeeHaa在评论中提供的链接。那个答案写得很好。
话虽如此,有许多架构模式可以用于创建Web应用程序。你的可能不是MVC。一些著名的非MVC框架包括SproutCore(基于视图的控制器)和JSP页面(单个控制器)。

1
请注意,即使大多数框架声称它们正在执行MVC模式。实际上,它们正在执行MVCi™(受MVC启发的)模式。 - PeeHaa

0

控制器的作用是使用php控制html中的表单元素。例如:

/ * Fetch POST Data */
    $id = $_POST['name'];

使用模型仅限于数据库操作(插入、选择等)。


大家好,感谢您的回复。我认为让我困惑的部分是MVC和Ajax的结合使用,以及在这种情况下是否有意义使用MVC。但正如Yasky所写,还有更多的架构模式。我会阅读这篇文章,也许我能找到一个更合适的模式。 - Anatol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接