Ajax请求返回POST&lt; <url>&gt; 500内部服务器错误)

时间:2017-09-11 21:43:44

标签: php jquery ajax

我一直在使用WAMP Server为一个网站做这个模块,一切正常,但是当我将它上传到网站服务器时,它总是返回错误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上工作正常。

1 个答案:

答案 0 :(得分:1)

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

错误500意味着您的PHP脚本出现了问题,Web服务器无法正确处理。它通常类似于未声明(或已弃用)的功能或路径或扩展程序的某些问题。

要调查此问题,要遵循的第一步是在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扩展程序&#39;准备好的陈述或通过mysql_real_escape_string()传递您将在查询字符串中使用的所有变量。