【问题标题】:Ajax request returns POST <<url>> 500 (Internal Server Error)Ajax 请求返回 POST <<url>> 500 (Internal Server Error)
【发布时间】:2017-09-12 05:59:51
【问题描述】:

我一直在使用 WAMP 服务器为网站做这个模块,一切正常,但是当我将它升级到网站服务器时,它总是返回错误 500。

Error 500 1

Error 500 2

当主页 index.php 加载(使用 Javascript .ready 函数)时,它会向“obtenermunicipio.php”发送一个 ajax 请求。

<script type="text/javascript">
    $( document ).ready(function() {
        $.ajax({
          type: 'POST',
          url: '../obtenermunicipio.php',
          data : {'valor':'paz'},
          dataType: 'json',
          success: function(data) {
            if(data.length <= 0) {
              return;
            }
            for(var i=0; i < data.length; i++) {
                var opcion = document.createElement('option');
                opcion.innerHTML+=data[i];
                document.getElementById('unidadmedica').appendChild(opcion);
            }
          },
          error: function(e) {
            console.log(e.message);
          }
        }); 
    });
</script>

“obtenermunicipio.php”页面接收值“valor”并进行 MySQL 查询以获取它返回的数组数据。

<?php
    include($_SERVER['DOCUMENT_ROOT'].'/Noticias/conexion.php');
    header('Content-Type: text/html; charset=ISO-8859-15');
    header("application/json");
    $conexion=conectar();
    $municipio = utf8_decode($_POST['valor']);
    if($municipio != "loret")
        $sql = "SELECT DISTINCT unidadmedica FROM `unidadesmedicas` WHERE municipio like '%".$municipio."%' AND localidad NOT LIKE '%loret%'";
    else
        $sql = "SELECT DISTINCT unidadmedica FROM `unidadesmedicas` WHERE localidad like '%".$municipio."%'";
    $rs = mysql_query($sql) or die(mysql_error($conexion)); 
    $fila = mysql_fetch_all($rs);
    print json_encode($fila);
?>

关于如何解决它的任何想法?它在 Wamp 上运行良好。

【问题讨论】:

  • 可能是php错误,查看服务器上的错误日志
  • 检查您的服务器错误日志
  • 是Linux服务器,日志文件叫什么名字?
  • 很可能不支持mysql_函数,无论如何你都应该使用mysqli。
  • 如果您找不到错误日志文件,您可以直接error_reporting(-1); ini_set("display_errors", true); 并打印错误。另外,就像@inarilo 所说,使用 mysqli 或 PDO 代替。如果您运行的 PHP 版本高于 5.4,您将收到 E_DEPRECATED 通知,如果您运行的是 PHP7,它们将变成致命错误。

标签: php jquery ajax


【解决方案1】:

我将其放在回复而不是评论中,因为我觉得他们很难跟踪,因为有很多事情要说。

错误 500 表示您的 PHP 脚本有问题,Web 服务器无法正确处理。它通常类似于未声明(或已弃用)的函数或路径或扩展的一些问题。

调查问题的第一步是在您的网络服务器上找到 error_log 文件,或者将这两行粘贴到您的 php 脚本的顶部:

<?php
error_reporting(-1); // highest error reporting level
ini_set("display_errors", true); // print errors directly as output
/* all the rest here */

也就是说,您的代码还有一个问题!请注意,它确实容易受到 SQL 注入攻击,因为您直接构建查询字符串,而其他人可能会让您的查询执行完全不同的操作。

要解决这个问题,您应该使用 PDO 和 MySQLi 扩展的预处理语句,或者通过 mysql_real_escape_string() 传递您将在查询字符串中使用的所有变量。

【讨论】:

  • 就像之前的帖子一样,error_reporting() 函数不起作用,它总是返回: Uncaught ReferenceError: error_reporting is not defined at Object.error (index.php:28) at i (jquery. min.js:2) 在 Object.fireWith [as rejectWith] (jquery.min.js:2) 在 A (jquery.min.js:4) 在 XMLHttpRequest. (jquery.min.js:4)。我会考虑 mysql_real_escape_string(),因为服务器无法处理 MySQLi 或 PDO 扩展'
猜你喜欢
  • 2015-09-15
  • 2020-01-11
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 2018-11-29
  • 2018-12-29
  • 2016-05-30
相关资源
最近更新 更多