0

我正在尝试通过jquery-confirm插件通过其 ajax-load 函数从表单加载文件数据来执行 AJAX 请求,然后将信息更新到 PHP 文件并最终更新到数据库。

但是,这会导致以下错误。

Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0

Warning: Cannot modify header information - headers already sent in Unknown on line 0

我什至尝试输入一个空白变量,因为此错误的含义是它没有将数据发布到页面。这只是简单地返回一个未定义的索引,确认它没有发布数据。

这个网站上的一些帖子说要更改php.ini文件等,因为我使用的是大学服务器,我们无权更改这些文件。

这是我执行 AJAX 功能的 JS 文件

function addSubject(){
    $("#addBtn").on('click', function() {     
        $.confirm({
            title: 'Manage Subjects',
            content: 'url: addSubjectForm.html',
            buttons: {
                addSubject: {
                    text: 'Add New Subject',
                    btnClass: 'btn-info',
                    action: function () {
                        var findSubject = this.$content.find('input#newSubject');
                        var findDescript = this.$content.find('input#newDescript');

                        var newSubject = findSubject.val();
                        var newDescript = findDescript.val();

                        if (newSubject === '' || newDescript === '') {
                            $.alert({
                               content: 'One of the fields from the form was empty',
                               type: 'red'
                            });
                            return false;
                        } else {
                            $.ajax({
                                url: "../ajax/admin/addSubject.php",
                                type: "POST",
                                data: {title: newSubject, description: newDescript, blank: 'blank'},
                                cache: false,
                                contentType: false,
                                processData: false,
                                success: function (result) {
                                    $.alert({
                                       content: result,
                                       type: 'green'
                                    });
                                }
                            });

                            console.log(newSubject + " " + newDescript);
                        }
                    }    
                },
                close: {
                    text: 'Close',
                    btnClass: 'btn-danger'
                }
            } 
        });
    });
}

我访问变量的 PHP 页面在这里:

<?php

$title = filter_input(INPUT_POST, "title");
$description = filter_input(INPUT_POST, "description");

$test = $_POST['blank'];

echo $test;

echo "$title $description";

这些文件中的空白变量仅用于测试目的。

提前致谢。

4

2 回答 2

1

如警告 $HTTP_RAW_POST_DATA 已弃用,请改用:

$raw_post_body = file_get_contents("php://input");

用于阅读原始正文内容。

但是从我在 JS 代码中看到的内容来看,您发送的是普通的 www-url-encoded 表单,因此建议使用 $_POST 。如果它仍然不起作用,请在 $_POST 上执行 var_dump 或 print_r 以便在 POST 请求中确实没有发送任何内容时进行调试。

于 2018-03-12T14:48:03.823 回答
0

尝试 :

$title = filter_input(INPUT_POST, 'title', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $description = filter_input(INPUT_POST, 'description', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);

于 2018-03-12T14:06:05.147 回答