簡體   English   中英

Ajax GET 請求給了我一個錯誤 500

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM