[英]The Ajax GET request gives me an error 500
我是一名學生,目前正在從事一個 php 項目。 執行以下代碼時,我收到錯誤 500。
項目.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);
}
});
});
項目.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
項目.js
項目
科學項目.php
項目.php
配置文件
任何人都可以幫我解決這個錯誤嗎? 先感謝您
您的問題是您正在嘗試return
您的值。 PHP 不能這樣返回,您的 Javascript 和 PHP 是完全獨立的調用堆棧的一部分。 雖然這不會導致您的 500 錯誤,但您在這里會遇到其他錯誤。
在project.php
的開頭,您需要添加header('Content-type: application/json');
您的 AJAX 調用會自動期待 JSON,並將它獲得的任何響應視為 JSON。 但是,如果您希望在其他地方使用它,這可能會防止出現錯誤。
此外,您的$amount
為您提供了一個 mysqli_result 對象,您需要使用諸如$values = mysqli_fetch_assoc($amount)
來獲取所需的值。
然后,您需要echo json_encode($values['sum'])
而不是return
ing,如果您不希望程序繼續執行(如 return 那樣),您還需要exit()
或die()
回聲之后。
您$amount
行上的die()
也有錯誤,應該使用mysqli_error()
而不是mysql_error()
我還建議在此處查看准備好的語句以保護您的查詢免受 SQL 注入:https ://www.w3schools.com/php/php_mysql_prepared_statements.asp
避免發布您的數據庫詳細信息。 你永遠不知道你的項目會持續多久,或者這個問題會持續多久。 如果您的數據庫用於公開使用的內容,並且您存儲敏感信息,則有人可能在很久以前就使用了此密碼並獲得了對它的寫訪問權限。
為了使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);
}
500(內部服務器錯誤)表示服務器端出現問題。
您可能需要檢查幾件事,
1)我會首先驗證 URL 和參數是否正確。 此外,請確保處理請求的任何內容都期望請求為 GET 而不是 POST。
2) 了解更多正在發生的事情的一種有用方法是使用像 Fiddler 這樣的工具,它可以讓您觀察所有 HTTP 請求和響應。
如果您沒有令人信服的理由來編寫自己的 Ajax 代碼,那么最好使用為您處理 Ajax 交互的庫。 jQuery 是一種選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.