首页 > 解决方案 > jQuery Ajax 调用在服务器上出现内部服务器错误,但在 Localhost 上有效

问题描述

我刚得到我的主机,我从本地主机服务器上传文件,导出本地数据库并将其上传到主机服务。然后我创建了一个具有所有权限的用户。

问题是,当我进入网站时,执行查询的 PHP 文件会给出Internal server error (500)

我使用以下代码检查了与数据库的连接和 PHP 的版本:

<?PHP
$db_servername = "www.website.com";
$db_username = "user";
$db_password = "password";
$db_database = "db";

phpinfo();

$db = mysqli_connect($db_servername, $db_username, $db_password,$db_database);
if (!$db) {
    die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}

echo 'Connected... ' . mysqli_get_host_info($db) . "\n";
?>

这样做的结果是与数据库的连接成功并且 PHP 版本是最新的。

这是查询 php 文件中的代码:

<?php
include('db.php');
$sql = $db ->prepare('...');
$sql -> execute();
$result = $sql -> get_result();
$list = array();
while( $row = $result->fetch_assoc() ) {
    $list[] = $row;
}
$final_list = json_encode($list);
echo $final_list;
?>

该查询已在服务器中检查,并且工作正常。我已经对上面的代码部分进行了注释,以检查它何时给出错误,并且当我回显 $final_list 时出现错误。其他一切都有效。

这是调用查询的脚本中的代码:

$.post("load_articles.php", function(result){
if(! (result == null)){
    /* Iterate through results to populate table */
    json = result;
    for(var i in json){
        if(i % 2 == 0 && i < 5){
            columnModulus = 0;
        }else if(i < 5){
            columnModulus = 1;
        }else if(i % 2 == 0 && i >= 5){
            columnModulus = 2;
        }else if(i >= 5){
            columnModulus = 3;
        }
        myData =
        '<a href="article.php?articleId=' + json[i].aId + '">' + 
            '<div class="home-article" id="' + json[i].aId + '">' + 
            '<img style="margin: auto; display: block;" data-modulus="'+columnModulus+'" src="'+json[i].imagePath+'">'+
            '<p class="article-theme">'+json[i].theme+'</p>'+
            '<p class="article-title">' + json[i].title + '</p>' +
            '</div>'+ 
            '</a>';
        appendTo = ".home-container div[data-modulus='"+columnModulus+"']";
        $(appendTo).append(myData);
    }
    

    }else{
        myData += "<div>No comments found</div>";
    }
}, "json"); 

此代码在 localhost 中运行良好,当然更改了数据库连接详细信息,但它在在线服务器上不起作用。有任何想法吗?

标签: phpjquerymysql

解决方案


在文件错误报告的开头添加,在生产服务器上通常为“关闭”。

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

希望这将帮助您诊断问题。否则,请参阅日志文件以了解错误。


推荐阅读