Как сохранить данные в переменной в файле PHP и вернуть их в качестве ответа (возврат к вызову ajax)? - PullRequest
0 голосов
/ 11 июля 2019

Я строю школьную базу данных для домашней работы. У меня проблемы с получением объекта JSON из PHP, как я понял.Мне удалось отправить данные в мой файл PHP.Я хотел бы вернуть его в ответ на вызов Ajax. Я получил сообщение «Нет данных ответа на этот запрос» на моей консоли Firefox. Заранее благодарю за помощь.

index.html:

 <form class="ajaxForm" method="post" action="./Controller/CourseController.php">

Custom.js:

  $(document).ready(function () {
        console.log("ready!");

        $('body').click('submit', '.ajaxForm', function (e) {
            e.preventDefault();

            var form = $(this)[0];
            var formData = new FormData(form);

            formData.append('submit', $('.submitted-button').attr('name'));


            var dataArray = {
                id: '111',
                title: 'foo'
            };

            var jsonString = JSON.stringify(dataArray);

            function returnwasset(){
            $.ajax({
                type: $(this).attr('method'),
                dataType: 'json',
                url: $(this).attr('action'),
                data: jsonString,
                // THIS MUST BE DONE FOR FILE UPLOADING:
                contentType: false,
                processData: false,
                success: function () {
                    alert(response);

CourseController.php

<?php    

include '../Service/DbTableCourse.php';  

$link = connectToDatabase();
$sql = "SELECT * from courses";
$rows = $link->query($sql);    

echo json_encode($action);    
$action = $_GET['action'];

if ($action == 'C') {
    createCourse();
}
if ($action == 'R') {
    readCourse($_GET['id']);
}
if ($action == 'U') {
    updateCourse($_GET['id']);
}
if ($action == 'D') {
    deleteCourse($_GET['id']);
}

function createCourse() {
    $title = htmlspecialchars($_GET['title']);
    $sql = "INSERT INTO courses (title) values ('$title')";
    $link = connectToDatabase();
    $val = $link->query($sql);
    if ($val) {
        header('location: ../index.html');
    } else {
        echo "error";
    }
}    
function readCourse($id) {
    $sql = "SELECT * from courses where id ='$id'";
    $link = connectToDatabase();
    $rows = $link->query($sql);

    $row = $rows->fetch_assoc();    

    return $row['title'];
}    
function updateCourse($id) {
    echo $id;
}    
function deleteCourse($id) {
    echo $id;
}

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Этот «ответ» должен исходить из функции успеха:

Вместо этого:

success: function () {
   alert(response);

Попробуйте это:

success: function (response) {
   alert(response);

И, как сказал @Thierry Leroux, измените PHP-запрос с $_GET[ на $_POST[

0 голосов
/ 11 июля 2019

Вы отправляете данные методом POST, как установлено в вашем коде JS:

$.ajax({ type: $(this).attr('method'), (...)

Атрибут "method" <form> имеет значение "POST".

PHP-скрипт ожидает данных "GET", поэтому вам нужно заменить $_GET на $_POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...