【问题标题】:Ajax to pass form data to controller methodAjax 将表单数据传递给控制器​​方法
【发布时间】:2017-04-05 05:47:14
【问题描述】:

我试图在没有 OOP 方法的情况下学习 MVC,并在没有框架帮助的情况下制作一个简单的 CRUD。

目前的结构是:

Model : -Post.php

View : - Index.php
       - CRUD.php

Controller : Controller.php

我想使用 ajax 提交我的表单数据,然后将其传递给控制器​​方法,但这不起作用。

我的表格:

<form class="form-horizontal" method="POST" action="" id="data-form">
                <div class="container form-group">
                    <label class="control-label col-sm-2">Nama:</label>
                    <div class="col-md-10">          
                        <input type="text" class="form-control" name="nama" id="nama" placeholder="Masukkan Nama">
                    </div>
                </div>
                <div class="container form-group">
                    <label class="control-label col-sm-2">MSISDN:</label>
                    <div class="col-md-10">          
                        <input type="text" class="form-control" name="msisdn" id="msisdn" placeholder="Masukkan MSISDN">
                    </div>
                </div>
                <div class="container form-group">
                    <label class="control-label col-sm-2">SMS:</label>
                    <div class="col-md-10">     
                        <textarea class="form-control" rows="5" name="sms" id="sms"></textarea>
                    </div>
                </div>
                <div class="container form-group">        
                    <div class="col-sm-offset-2 col-sm-10">
                        <button type="button" class="btn btn-primary" name="submit" id="submit">Submit</button>
                        <a href="CRUD.php" class="btn btn-default col-sm-offset-9">Go to CRUD</a>
                    </div>
                </div>
            </form>

我的 ajax:

        $(document).ready(function(){
        $("#submit").click(function(e){

            var postURL = "../Controller/Controller.php/create";
            var postNama = $("#nama").val();
            var postMSISDN = $("#msisdn").val();
            var postSMS = $("#sms").val();

            $.ajax({
                type: "POST",
                url: postURL,
                data:
                {
                    nama: postNama,
                    msisdn: postMSISDN,
                    sms: postSMS
                },
                success: function(data){
                    //
                }
            });
            e.preventDefault();
        });
    });

我的控制器:

<?php

require_once "../Model/Model.php";
require_once "../View/CRUD.php";


function create(){
    $nama = $_POST["nama"];
    $msisdn = $_POST["msisdn"];
    $sms = $_POST["sms"];
    insertData($nama, $msisdn, $sms);
}
?>

我的模型:

    function insertData($name, $msisdn, $sms){
    try{
        $conn = new PDO('mysql:host=localhost; dbname=crud', 'root', '');

        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e){
        echo 'ERROR: ' . $e->getMessage();
    }
    $conn->prepare("INSERT INTO data (nama, msisdn, sms) VALUES (?, ?, ?)")->execute([$name, $msisdn, $sms]);
}

【问题讨论】:

  • 你有任何回应吗?一个错误?你能辨别系统在做什么?
  • 我正在尝试在警报框中输出变量,并且工作正常,没有错误。我只是不知道如何将变量传递给 controller.php 中的 create() 方法
  • 你无法使用这个 url "../Controller/Controller.php/create" 来点击你的创建方法

标签: php jquery ajax model-view-controller


【解决方案1】:

试试这个:

更新的 Ajax:

$("#submit").on('click', (function(e){

    var postURL = "../Controller/Controller.php?action=create";

    $.ajax({
        type: "POST",
        url: postURL,
        data: $('form#data-form').serialize(),
        success: function(data){
            //
        }
    });
    e.preventDefault();
});

更新控制器:

<?php

require_once "../Model/Model.php";
require_once "../View/CRUD.php";

class Controller
{

    function create(){
        $nama = $_POST["nama"];
        $msisdn = $_POST["msisdn"];
        $sms = $_POST["sms"];
        insertData($nama, $msisdn, $sms);
    }

}

if(!empty($_POST) && isset($_GET['action']) && $_GET['action'] == ''create) {
    $object = new Controller();
    $object->create();
}

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多