2017-04-05 56 views
0

我試圖在沒有OOP方法的情況下學習MVC,並在沒有框架幫助的情況下製作簡單的CRUD。Ajax將表單數據傳遞給控制器​​方法

目前的結構是:

Model : -Post.php 

View : - Index.php 
     - CRUD.php 

Controller : Controller.php 

IM要使用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]); 
} 
+0

你得到任何迴應?一個錯誤?你能看出系統在做什麼? –

+0

即時嘗試輸出警報框中的變量和它的工作正常,沒有錯誤。 我只是不知道如何將變量傳遞給controller.php中的create()方法 –

+0

您無法通過此URL訪問您的創建方法「../Controller/Controller.php/create」 –

回答

0

試試這個:

更新的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(); 
} 

?> 
相關問題