如何将数据保存在PHP文件中的变量中并作为响应返回(返回给ajax调用)?

时间:2019-07-11 13:32:16

标签: php jquery ajax

我正在为我的作业构建学校数据库。据我所知,我在从PHP接收JSON对象时遇到问题。我设法将数据发送到我的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 :(得分:0)

您可以使用JS代码中设置的POST方法发送数据:

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

<form>的“方法”属性设置为“ POST”。

PHP脚本正在等待“ GET”数据,因此您必须将$_GET替换为$_POST

答案 1 :(得分:0)

此“响应”必须来自成功函数:

代替此:

success: function () {
   alert(response);

尝试一下:

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

正如@Thierry Leroux所说,将PHP请求从$_GET[更改为$_POST[