POST 请求无法使用 JQuery AJAX

Posted

技术标签:

【中文标题】POST 请求无法使用 JQuery AJAX【英文标题】:POST request not working using JQuery AJAX 【发布时间】:2013-04-30 19:54:55 【问题描述】:

我正在尝试使用 JQuery AJAX 允许用户将信息输入到弹出框中的表单中,然后将信息添加到 mysql 数据库中。 但是,由于某种原因,当我使用 JQuery AJAX 函数(我已经尝试过 $.post() 和 $.ajax())来发布数据时,它不会被发布。相反,对于我尝试发布的所有字段,我都会收到“未定义索引”的错误消息(当我转到 processNewAssignments.php 时,这是我要发布到的 URL)。我做错了什么?

用户点击POST信息时我的JQuery AJAX函数调用是:

$.ajax(url: "[THIS CONTAINS THE REST OF THE URL]/processNewAssignments.php",
                    type: 'POST',
                    data: max_grade: maxGradeValue, title: taskNameValue, due: dueDateValue);

或者我也试过了:

$.post("[THIS CONTAINS THE REST OF THE URL]/processNewAssignments.php", 
        max_grade: maxGradeValue, title: taskNameValue, due: dueDateValue);

我的 processNewAssignments.php 代码(数据发布到的 URL)是:

<?php session_start(); ?>

<!DOCTYPE html>
<html lang="en">
<head>
<title>Process Assignments</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<?php 

    $maxgrade = $_POST["max_grade"];
    $title = $_POST["title"];
    $due = $_POST["due"];
    $classID = $_SESSION["classID"];


    echo "hello!";
    echo $title . $classID . $due . $maxgrade;

    require("db.php");
    $query = "INSERT INTO assignments (title, assignmentID, classID, deadline, max_grade) VALUES ('$title', DEFAULT, '$classID', '$due', '$maxgrade')";
    $result = mysql_query($query, $db);

?>

【问题讨论】:

Please, don't use mysql_* functions 在新代码中。它们不再被维护并且是officially deprecated。看到红框了吗?改为了解准备好的语句,并使用pdo 或mysqli。 【参考方案1】:

相反,我收到所有字段的“未定义索引”错误消息 试图发布(当我去 processNewAssignments.php,这是 我要发布到的 URL)。我做错了什么?

如果我理解正确,您正试图通过发送 第二个 GET 请求 来查找您发布的变量,即在地址栏中输入 URL。

如果确实如此,您应该得到undefined index,因为您没有发布任何内容,因此$_POST 数组未定义。

要测试您的 ajax POST 请求,您需要使用开发工具(Chrome 上的 F12),选择 Network 选项卡,然后单击发出的请求。

在那里您可以看到请求是否成功(200 响应代码),以及什么是 响应的内容。

【讨论】:

这很有道理!!谢谢! 我还建议使用$_REQUEST 而不是$_POST$_GET @user1516849【参考方案2】:

您已指定要 INSERT 插入 5 列;但只有 4 个值传递给它:

title, assignmentID, classID, deadline, max_grade

和你的价值观:

'$title', DEFAULT, '$due', '$maxgrade'

【讨论】:

以上是关于POST 请求无法使用 JQuery AJAX的主要内容,如果未能解决你的问题,请参考以下文章

将 jquery ajax POST 请求更改为 fetch api POST

如何使用 Symfony 和 Jquery 发出 POST Ajax 请求

ajax/jquery POST 请求的不必要重复

无法按顺序触发两个 jQuery ajax 调用

Jquery 调用了post后在数据返回前页面无法跳转

无法使用 JQuery Ajax Post 调用显示项目列表