2015-12-21 3 views
-3

Я пытаюсь передать значение из таблицы 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?

+0

Проверить состояние запроса в консоли, чтобы увидеть, если вы получаете сообщение об ошибке. –

+0

У меня нет ошибок ни в консоли, ни в журнале ошибок PHP. Если я изменил URL-адрес на «controllers/booking.php» или что-то в этом роде, я получаю 404, но даже если «index.php? Page = booking» не дает ошибку, контроллер не регистрирует Ajax вызов. Я не думаю, что это проблема синтаксиса, поскольку я использовал один и тот же код в других проектах без проблем, но, может быть, мне нужно сделать это по-другому из-за разной структуры? – MaDaHoPe

+0

Вы пытались сделать 'print_r ($ _ POST)' в своем контроллере? – bIgBoY

ответ

0

Я думаю, что нужно ваши переменные (ы) данных в кавычках:

data: {'time': $time}, 
+0

Ты очень прав, сэр. Небрежность с моей стороны, когда пытаешься. Однако проблема сохраняется. Если if (isset ($ _ POST ['time]] никогда не запускается ... – MaDaHoPe

+0

вы можете попробовать следующее и посмотреть, что на самом деле установлено: 'print_r ($ _ REQUEST)' – Harvinder