我是一名学生,目前正在从事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
有人可以帮助我解决该错误吗? 预先谢谢
答案 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是一种选择。