无法理解为什么javascript在我的php文件中不起作用

无法理解为什么javascript在我的php文件中不起作用,javascript,php,jquery,html,css,Javascript,Php,Jquery,Html,Css,在github上找到此GPA计算的代码,但无法使其正常工作。外观显示正确,但不会计算GPA,并且“添加/删除行”按钮不起作用。这是指向github上的文件的链接 这是我在做了一些更改后更新的代码。计算gpa部分仍然不起作用,添加/删除行也不起作用,因为我认为缺少代码部分。我不知道如何让添加/删除行代码工作。在javascript中,我没有看到任何将操作绑定到添加/删除行按钮的内容。这可能就是他们什么都不做的原因 您将表单数据提交到PHP脚本的代码很好,不过最好只发送一个对象,而不是自己构建请求体

在github上找到此GPA计算的代码,但无法使其正常工作。外观显示正确,但不会计算GPA,并且“添加/删除行”按钮不起作用。这是指向github上的文件的链接


这是我在做了一些更改后更新的代码。计算gpa部分仍然不起作用,添加/删除行也不起作用,因为我认为缺少代码部分。我不知道如何让添加/删除行代码工作。

在javascript中,我没有看到任何将操作绑定到添加/删除行按钮的内容。这可能就是他们什么都不做的原因

您将表单数据提交到PHP脚本的代码很好,不过最好只发送一个对象,而不是自己构建请求体,因为您当前没有转义任何值。因此,如果名称包含&或/或任何其他字符,则请求正文将无效:

var formData = {
    "name": name,
    "points": points,
    "hours": hours
};

// just send an object, let jQuery deal with escaping it
$.post("getGPA.php", formData, function(data) {
    $("#showGPA").show();
    $("#result").text(data);
});
在PHP方面,您正在访问原始输入。那完全没有必要。您正在执行一个常规POST请求并发送正确的值,因此您只需从$\u POST获取值即可。您肯定没有向服务器发送JSON,因此调用JSON_decode没有意义

// import JSON string
// $raw_data = file_get_contents('php://input');
// $json_data = json_decode($raw_data, true);
// remove those lines, they don't do anything useful.

// parse form input
$name = "";
$points =  $hours = $gpa = 0.0;

$name = validate_input($_POST["name"]);
// note: you're sending "name" to the server, not "person_name"

$points = validate_input($_POST["points"]);
$hours = validate_input($_POST["hours"]);
$classes = $_POST["classes"];

我不知道类是从哪里来的,因为您没有向服务器发送任何类。

我认为您必须解析您的post数据,请尝试以下操作

// import JSON string
    $json_data=array();
    $raw_data = file_get_contents('php://input');
    parse_str($raw_data,$json_data);

    // parse form input
    $name = "";
    $points =  $hours = $gpa = 0.0;

    $name = validate_input($json_data["name"]);
    $points = validate_input($json_data["points"]);
    $hours = validate_input($json_data["hours"]);
    $classes = $json_data[0]["classes"];

有什么错误吗?@RAUSHANKUMAR它没有给我任何错误,引导程序工作正常,但任何功能都无法工作。添加/删除行将不起作用,当我尝试计算GPA时,它只显示0.0。我认为我正确地调用了javascript文件,但函数似乎不起作用。我也不知道如何从index.php文件调用php文件。@BradleyNewman我看到两个错误-第一个$raw\u data=file\u get\u contents'php://input'; $json_data=json_decode$raw_data,true;->$原始数据不是json。Sec-验证输入$json_数据[0][人名];->您发送的是姓名而不是人员_name@RAUSHANKUMAR实际上,在script.js文件中,dreamweaver告诉我,第3行第5列由于缺少use strict语句而出现错误。第15行第20列有另一个错误,它说expected===而不是==,但是idk如果这是导致我的问题的原因,因为它看起来像是奇怪的警告。@Matx132,所以我应该将行更改为$data=decode$raw_data,true;并验证_输入$json_数据[0][name]?我做了你建议的更改,但仍然不起作用。我相信这可能是因为我没有在原始文件中调用PHP代码?我是否应该将php粘贴到index.php文件体的某个位置?不,不需要。你的浏览器控制台告诉你什么?您是否收到javascript错误?我正在使用dreamweaver尝试将其更新到网站。dreamweaver告诉我的唯一错误位于script.js文件中,它在第3行说缺少use strict语句,在第15行说预期===而不是saw==这是浏览器控制台说的,控制台什么是新的过滤器索引。php:1混合内容:上的页面是通过HTTPS加载的,但要求一个不安全的法维康。此内容还应通过HTTPS提供。php:1混合内容:上的页面是通过HTTPS加载的,但请求了不安全的favicon。此内容还应通过HTTPS提供。出于安全原因,我删除了这些链接。我只是对你的代码进行了分叉,并对其进行了调整,直到它起作用,结果发现我在数据方面完全错了。responseText。如果将其设置回$result.textdata;这对我来说很有效。这实际上比其他解决方案更有效,但它只让name字段起作用。执行建议的更改后,其他字段仍不会计算。这是javascript错误吗?@BradleyNewman让你将你的索引、脚本和php文件连接在一起,bcaz我在你的github存储库文件中没有看到,它们彼此没有连接。此外,如果你描述我可以更容易地帮助你,我也无法得到$classes=$json_data[0][classes]的意思,如果可能的话,我可以用新的文件更新你的github文件。我已经编辑了原始文章以反映当前的文件。
var formData = {
    "name": name,
    "points": points,
    "hours": hours
};

// just send an object, let jQuery deal with escaping it
$.post("getGPA.php", formData, function(data) {
    $("#showGPA").show();
    $("#result").text(data);
});
// import JSON string
// $raw_data = file_get_contents('php://input');
// $json_data = json_decode($raw_data, true);
// remove those lines, they don't do anything useful.

// parse form input
$name = "";
$points =  $hours = $gpa = 0.0;

$name = validate_input($_POST["name"]);
// note: you're sending "name" to the server, not "person_name"

$points = validate_input($_POST["points"]);
$hours = validate_input($_POST["hours"]);
$classes = $_POST["classes"];
// import JSON string
    $json_data=array();
    $raw_data = file_get_contents('php://input');
    parse_str($raw_data,$json_data);

    // parse form input
    $name = "";
    $points =  $hours = $gpa = 0.0;

    $name = validate_input($json_data["name"]);
    $points = validate_input($json_data["points"]);
    $hours = validate_input($json_data["hours"]);
    $classes = $json_data[0]["classes"];