2012-08-11 72 views
1

我写了一个代码,使用getJSON(见下文)。 FireBug返回以下错误信息:getJSON:NetworkError:500内部服务器错误

"NetworkError: 500 Internal Server Error - http://localhost:10088/test/myquery.php?query=SELECT%20tm%20FROM%20schedule%20WHERE%20val=%27BT009%27;" 

我找不出这个错误的原因。任何帮助,高度赞赏。

PS我在MySQL查询浏览器中测试了这个SQL查询。它已经返回了3行。

mainPage.php

<script> 
function updateList(){ 
    var query = "SELECT tm FROM schedule WHERE val='BT009';"; 

    $.getJSON(
      'myquery.php?query='+query, 
      function(data) 
      { 
       alert(data); 
      } 
    ); 

} 

$(document).ready(function() { 
    updateList(); 
}); 

</script> 

myquery.php

<?php 
include_once 'include/connect_db.php'; 

if (isset($_GET['query'])) { 
    $query = $_GET['query']; 

    $condb = connectDB(); 
    $result=execute_query($query); 
    closeDB($condb); 

    $rows = array(); 

    if ($result && mysql_num_rows($result)) { 
     while($row = mysql_fetch_array($result)) { 
      $rows[] = $row['tm']; 
     } 
    } 

    var_dump($rows); 

    echo json_encode($rows); 

} else { 
    echo json_encode("Failed"); 
} 
?> 
+1

请不要使用'mysql_ *'功能,它们不再被维护,并且社区已经开始[deprecation process](http://goo.gl/KJveJ)。相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你想学习,[这里是一个很好的PDO相关教程](http://goo.gl/vFWnC)。 – vascowhite 2012-08-11 10:58:13

+2

这不是你的问题的答案,但我不提起它是不负责任的。您正在JavaScript中生成一个SQL字符串并将其发送到您的服务器以供执行。这是一个非常严重的应用程序安全漏洞,称为SQL注入。不要这样做。真的,真的,*真的*不。这是OWASP站点上的[关于它的信息](https://www.owasp.org/index.php/SQL_Injection)。 – Barend 2012-08-11 10:59:44

+2

如果我使用URL yourdomain.com/myquery.php?query="drop table schedule“,会发生什么情况? – vascowhite 2012-08-11 11:00:56

回答

2

一个Internal Server Error (Code 500)是一个服务器端错误和无关,与AJAX。这通常是由错误的服务器端代码引起的。你可能想检查你的语法,并尝试通过浏览器查看页面。页面也可能打印了一些错误细节。

+0

我在浏览器中编写了http:// localhost:10088/test/myquery.php?query = SELECT%20tm%20FROM%20schedule%20WHERE%20val =%27BT009%27;“错误信息是一样的。 – Gusgus 2012-08-11 11:03:52

0

我打算猜测服务器很难理解你的查询参数。尝试编码它:

'myquery.php?query='+encodeURIComponent(query) 

像别人说的,你在做什么是不安全的。您不应该传递查询来执行服务!

编辑:另一种可能是你没有传递三个参数到$ .getJSON()。尝试:

$.getJSON(
    'myquery.php', 
    {query: query}, 
    function(data) { 
     alert(data); 
    } 
); 
0

尝试使用firebug.Run当你在browser.It执行这段代码的萤火虫会给出错误的原因,并在校正required.Hope它将帮助。