Ajax将表单数据传递给控制器方法
问题描述:
我试图在没有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]);
}
答
试试这个:
更新的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();
}
?>
你得到任何回应?一个错误?你能看出系统在做什么? –
即时尝试输出警报框中的变量和它的工作正常,没有错误。 我只是不知道如何将变量传递给controller.php中的create()方法 –
您无法通过此URL访问您的创建方法“../Controller/Controller.php/create” –