首页 > 解决方案 > AJAX 调用不向 PHP 脚本发送数据

问题描述

我试图在 PHP 文件中运行 AJAX 调用,当我按下提交按钮时,它将数据发送到服务器上的另一个 PHP 文件,该文件是从 html 输入中获取的。不幸的是,当我单击该按钮时,没有任何反应,即使在控制台中也没有。我试图通过window.alert()在 AJAX 调用中创建输入来调试问题,但它以某种方式在警报框中显示了某个“对象对象”结果。我试图更改路径以查看是否检测到文件,但似乎正在检测到它,因为当我故意添加错误的路径时它会抛出 404,甚至尝试向 PHP 文件添加回显调用调用但没有出现。我现在真正能想到的唯一问题是我的实现有问题,但我不确定它是什么。

更新:我尝试查找某些问题,例如此处此处,但它们对我不起作用

进行 AJAX 调用的代码:

<?php
require "../../../AutoLoader.php";

use mvcApplication\core\controllers\ControllerFactory;

?>
    <script>
        $(document).ready(function () {
            $('#submit').click(function () {
                $.ajax({
                    url: '../app/views/generic/deletefunc.php',
                    type: 'GET',
                    data: {
                        Id: $('#Id'),
                        value: "0"
                    },
                    processData: false
                });
            });
        });


    </script>
    <br>
    <br>
    <center>
        <h3>Enter Teacher ID:</h3><input type="text" id="Id" 
        placeholder="Input ID here"/>
    <br>
    <button class="col-sm-4" id="submit">Submit</button>
    </center>
    <br>

deletefunc.php(应接收数据的代码)

<?php

require_once '../../../AutoLoader.php';

use mvcApplication\core\controllers\ControllerFactory;

function deleteTeacher($a)
{
    echo $a;
    $entity = ControllerFactory::initTeacherC();
    $entity->delete($a);

}


function deleteStudent($a)
{
    echo $a;
    /*$entity = ControllerFactory::initStudentC();
    $entity->delete($data);*/
}


function deleteCourse($a)
{
    echo $a;
    /*$entity = ControllerFactory::initCourseC();
    $entity->delete($data);*/
}


if (isset($_GET['Id']) && isset($_GET['value'])) {
    switch ($_GET['value']) {
        case "0":
            deleteTeacher($_GET['Id']);
            break;

        case "1":
            deleteStudent($_GET['Id']);
            break;

        case "3":
            deleteCourse($_GET['Id']);
            break;
    }
}

标签: phpajax

解决方案


根据 ajax 文档http://api.jquery.com/jquery.ajax/

processData (default: true)类型:Boolean 默认情况下,作为对象(从技术上讲,不是字符串)传入数据选项的数据将被处理并转换为查询字符串,适合默认的内容类型“应用程序” /x-www-form-urlencoded”。

我认为您必须在您的 ajax 调用中将 processData 设置为 True,因为您使用的是 GET(获取需要查询字符串、url 数据),或者只是不设置它,所以它是默认值,这是真的。


推荐阅读