Я пытаюсь передать значение из таблицы html в контроллер PHP через Ajax. Я думаю, что проблема заключается в моей структуре MVC, но не уверен. Я ранее использовал Ajax без проблем в другой структуре, поэтому я довольно озадачен тем, где проблема в точности.Передача переменной в PHP с помощью AJAX
Я получаю значение из HTML таблицы в моем .js файл, как это и пытается передать его через AJAX:
$(".courtBook").click(function() {
var $row = $(this).closest("tr"); // Find the row
var $time = $row.find(".courtTime").text(); // Find the text
console.log($time);
// var sLink = "index.php?page=booking&time="+$time;
// $.get(sLink, function(jData){
// alert($time);
// });
//$.post("index.php?page=booking", { time: $time });
$.ajax({
url: 'index.php?page=booking', //This is the current doc
type: 'POST',
data: {time: $time},
success: function(){
alert('Much success, such wow');
},
error: function(){
alert('Much wrong, such sad');
}
});
});
Она захватывает правильное значение, так что часть прав. Как вы можете видеть, я попробовал пару вещей. На данный момент я просто пытаюсь повторить значение в PHP, чтобы убедиться, что переменная времени передана правильно, но ничего не отображается. Код PHP выглядит следующим образом:
if(isset($_POST['time'])){
echo "So far, so good";
$time = $_POST['time'];
echo $time;
}
Это тот же файл, который включает вид, содержащий HTML таблицы. Мои контроллеры структурированы следующим образом:
// including the model with the code for the database
include_once 'models/Booking_Table.class.php';
/* Passing information to and from the view */
// Include the view depending on the results from the database and return the view
$view = include_once 'views/booking-html.php';
return $view;
Взгляды PHP файлы с HTML в обратном сообщении. Мой индекс структурирована следующим образом:
//load page model class definition
include_once "models/Page_Data.class.php";
//database connection
include "models/dbcon.php";
//create a new object
$pageData = new Page_Data();
//change default content - include navigation
$pageData->content = include_once"views/navigation.php";
//main navigation
$navIsClicked = isset($_GET['page']);
if ($navIsClicked) {
$controller = $_GET['page'];
} else {
//default controller
$controller = "home";
}
$pageData->content .= include_once "controllers/$controller.php";
$pageData->content .= include_once "views/footer.php";
//load the view
$pageAsHTML = include_once "views/page.php";
echo $pageAsHTML;
Причина Я в том числе это потому, что я думаю, что проблема заключается в URL в вызове Ajax. У меня есть HTML-формы на других страницах, которые отлично работают со структурой URL-адреса в .js. По какой-то причине он, похоже, не попадает на страницу в Ajax.
Сценарии, контроллеры, представления и т. Д. Находятся в их собственной папке в корневом каталоге.
Может ли кто-нибудь сказать мне, где я ошибаюсь, или предоставить альтернативное решение для передачи значения из таблицы HTML в контроллер PHP?
Проверить состояние запроса в консоли, чтобы увидеть, если вы получаете сообщение об ошибке. –
У меня нет ошибок ни в консоли, ни в журнале ошибок PHP. Если я изменил URL-адрес на «controllers/booking.php» или что-то в этом роде, я получаю 404, но даже если «index.php? Page = booking» не дает ошибку, контроллер не регистрирует Ajax вызов. Я не думаю, что это проблема синтаксиса, поскольку я использовал один и тот же код в других проектах без проблем, но, может быть, мне нужно сделать это по-другому из-за разной структуры? – MaDaHoPe
Вы пытались сделать 'print_r ($ _ POST)' в своем контроллере? – bIgBoY