Ajax GET请求给我一个错误500

时间:2018-08-21 04:36:32

标签: php jquery ajax

我是一名学生,目前正在从事php项目。执行以下代码时,出现错误500。
project.js

$('#project[enter image description here][1]Modal').on('show.bs.modal', function (event) {
        var projectid = el.data('id');
        $.ajax({
            type:'GET',
            url: 'project.php',
            data: {'projectid':projectid},
            dataType : 'json',
            success : function(data) {
                if (data.success) {
                    var tot = data.amount+parseFloat(amount);
                    modal.find('#totalAmt').html(tot);
                }
            },
            error: function (jqXHR, exception) {
               alert(exception);
            }
        });
    });

project.php

<?php
include_once '../config.php';
if (isset($_GET['projectid'])) {
    $projectId = strip_tags($_POST['projectid']);
    $query = "SELECT SUM(amount) as sum FROM pledge WHERE project_id=$projectid";
    $amount = mysqli_query($mysqli, $query) or die(mysql_error());
    return $amount;
}
?>

下面是config.php

<?php

$databaseHost = 'localhost';
$databaseName = 'lyceum';
$databaseUsername = 'root';
$databasePassword = 'la#3478';

$mysqli = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName);

?>

下面是项目结构,
石膏
   js
   project.js
   项目
   science_project.php
   project.php
config.php

有人可以帮助我解决该错误吗? 预先谢谢

3 个答案:

答案 0 :(得分:1)

这里的问题是您试图return的价值观。 不能那样返回PHP,您的Javascript和PHP是完全独立的调用堆栈的一部分。虽然这不会引起您的500错误,但此处还会有其他错误。

project.php的开头,您需要添加header('Content-type: application/json');,您的AJAX调用会自动使用JSON,并将收到的所有响应都视为JSON。但是,如果您希望在其他地方使用此功能,则可以防止错误。

此外,您的$amount为您提供了mysqli_result对象,您需要使用类似$values = mysqli_fetch_assoc($amount)的东西来获取所需的值。

然后,您无需return,而需要echo json_encode($values['sum']),并且如果您不希望程序继续执行(如return一样),则还需要exit()die()在回声之后。

您的die()行上的$amount也有错误,应以mysqli_error()代替mysql_error()

我还建议在此处查看准备好的语句以保护查询免遭SQL注入:https://www.w3schools.com/php/php_mysql_prepared_statements.asp

避免发布您的数据库详细信息。您永远不会知道您的项目要持续多长时间,否则这个问题将会解决。如果您的数据库用于公共用途,并且您存储了敏感信息,那么很久以前有人可以使用此密码,并且可以对其进行写访问。

答案 1 :(得分:0)

要使project.js工作,您的project.php应该看起来像

include_once '../config.php';
if (isset($_GET['projectid'])) {
    $projectId = strip_tags($_POST['projectid']);
    $query = "SELECT SUM(amount) as sum FROM pledge WHERE project_id=$projectid";
    $amount = mysqli_query($mysqli, $query) or die(mysql_error());

    $response = array();
    $response["success"] = TRUE;
    $response["amount"] = $amount;

    echo json_encode($response);
}

答案 2 :(得分:0)

500(服务器内部错误)表示服务器方面出现了问题。

您可能需要检查几件事,

1)我将从验证URL和参数正确开始。另外,请确保处理请求的任何人都希望该请求是GET而不是POST。

2)了解更多信息的一种有用方法是使用Fiddler之类的工具,该工具可让您观察所有HTTP请求和响应。

如果您没有令人信服的理由来编写自己的Ajax代码,那么最好使用一个为您处理Ajax交互的库。 jQuery是一种选择。