Php GoDaddy主机上数据类型为JSON的AJAX解析错误

Php GoDaddy主机上数据类型为JSON的AJAX解析错误,php,javascript,jquery,ajax,json,Php,Javascript,Jquery,Ajax,Json,编辑: 从那以后,我把一切都转到了mysqli。我有另一个脚本,它在mysqli中正确地完成了所有操作,但我匆忙地复制了其他人的一部分,却没有注意到它是在mysql中完成的。看来这解决了这个问题,谢谢大家!我在下面编辑了我的代码,这样它就可以作为解决类似问题的任何人的资源 我在让ajax在godaddy共享托管帐户上工作时遇到了一些问题。我以前在另一台服务器上使用过它,没有任何问题,所以我认为godaddy服务器有点奇怪,尽管我很高兴不正确。我首先尝试用perl编写这段代码,但结果发现godad

编辑: 从那以后,我把一切都转到了mysqli。我有另一个脚本,它在mysqli中正确地完成了所有操作,但我匆忙地复制了其他人的一部分,却没有注意到它是在mysql中完成的。看来这解决了这个问题,谢谢大家!我在下面编辑了我的代码,这样它就可以作为解决类似问题的任何人的资源

我在让ajax在godaddy共享托管帐户上工作时遇到了一些问题。我以前在另一台服务器上使用过它,没有任何问题,所以我认为godaddy服务器有点奇怪,尽管我很高兴不正确。我首先尝试用perl编写这段代码,但结果发现godaddy不支持JSON.pm,所以我改用php,因为这似乎是godaddy的首选语言。我仍然在ajax调用中抛出一个错误

这是每个部分的玩具版本。HTML中唯一相关的部分是调用overlay.js和test id部分,以显示jQuery正在工作

下面的HTML调用overlay.js:

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Carl Thomas Edwards</title>
  <!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <link rel="stylesheet" type="text/css" href="css/style.css" />
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
  <script language="javascript" type="text/javascript" src="js/overlay.js"></script>
</head>

<body id="main">
  <p>
      <span id="test">0</span> match(es) found.
  </p>
</body>
</html>
根据Chrome开发者工具,ajax调用运行overlay.php时没有任何错误。我知道我使用的数据库连接可以正常工作,因为它在其他地方已经过测试。我知道我的查询可以工作,因为它已经在服务器上用SSH进行了测试。我不认为这个文件中可能有任何错误,但我还是愿意接受建议,因为这让我发疯

  $mysqli = mysqli_connect($hostname, $username, $password, $database);
  if(mysqli_connect_errno($mysqli)) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $qry = "
    SELECT paint_id, paint_name, paint_date, paint_media, paint_dim, paint_file 
    FROM paintings
    WHERE paint_id = '1'
  ";

  $results = mysqli_query($mysqli, $qry);
  $row = mysqli_fetch_assoc($results);    

  echo json_encode($row);
?>
overlay.php
  $mysqli = mysqli_connect($hostname, $username, $password, $database);
  if(mysqli_connect_errno($mysqli)) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $qry = "
    SELECT paint_id, paint_name, paint_date, paint_media, paint_dim, paint_file 
    FROM paintings
    WHERE paint_id = '1'
  ";

  $results = mysqli_query($mysqli, $qry);
  $row = mysqli_fetch_assoc($results);    

  echo json_encode($row);
?>
完整代码的URL为:


我在godaddy上的php.ini文件中启用了json。我还联系了他们寻求支持,那家伙完全不知所措。要让ajax调用在godaddy上正常工作,还需要做其他一些特殊的事情吗?为什么在PHP脚本中说“时出错?您正在以
mysqli
资源的形式打开数据库连接,但试图以
mysql
资源的形式查询它。您不能混合使用这两组调用。请使用
mysqli
并删除
mysql
,因为后者已被弃用

以这种方式混合调用可能会导致以后的
mysql
代码失败,并给出一条您没有检查或处理的错误消息

如果返回的错误消息是原始的,而不是预期的JSON结果,那么您将从Javascript中获得与您看到的完全相同的错误消息

[编辑]

我查看了您的站点。以下是您的ajax调用返回的内容:

<br />
<b>Warning</b>:  mysql_query() [<a href='function.mysql-query'>function.mysql-query</a>]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in <b>/home/content/78/11658278/html/overlay.php</b> on line <b>29</b><br />
<br />
<b>Warning</b>:  mysql_query() [<a href='function.mysql-query'>function.mysql-query</a>]: A link to the server could not be established in <b>/home/content/78/11658278/html/overlay.php</b> on line <b>29</b><br />
<br />
<b>Warning</b>:  mysql_fetch_row() expects parameter 1 to be resource, boolean given in <b>/home/content/78/11658278/html/overlay.php</b> on line <b>30</b><br />
null

警告:mysql_query()[]:无法通过第29行/home/content/78/11658278/html/overlay.php中的socket'/var/lib/mysql/mysql.sock'(2)连接到本地mysql服务器
  $mysqli = mysqli_connect($hostname, $username, $password, $database);
  if(mysqli_connect_errno($mysqli)) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $qry = "
    SELECT paint_id, paint_name, paint_date, paint_media, paint_dim, paint_file 
    FROM paintings
    WHERE paint_id = '1'
  ";

  $results = mysqli_query($mysqli, $qry);
  $row = mysqli_fetch_assoc($results);    

  echo json_encode($row);
?>

警告:mysql_query()[]:无法在第29行的/home/content/78/11658278/html/overlay.php中建立到服务器的链接
  $mysqli = mysqli_connect($hostname, $username, $password, $database);
  if(mysqli_connect_errno($mysqli)) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $qry = "
    SELECT paint_id, paint_name, paint_date, paint_media, paint_dim, paint_file 
    FROM paintings
    WHERE paint_id = '1'
  ";

  $results = mysqli_query($mysqli, $qry);
  $row = mysqli_fetch_assoc($results);    

  echo json_encode($row);
?>

警告:mysql_fetch_row()希望参数1是资源,布尔值在第30行的/home/content/78/11658278/html/overlay.php中给出
  $mysqli = mysqli_connect($hostname, $username, $password, $database);
  if(mysqli_connect_errno($mysqli)) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $qry = "
    SELECT paint_id, paint_name, paint_date, paint_media, paint_dim, paint_file 
    FROM paintings
    WHERE paint_id = '1'
  ";

  $results = mysqli_query($mysqli, $qry);
  $row = mysqli_fetch_assoc($results);    

  echo json_encode($row);
?>
无效的
您得到了某种mysql错误
mysql\u fetch\u row()期望参数1是resource,boolean在/home/content/78/11658278/html/overlay.php中给出
您得到了一些错误消息

警告:mysql\u query()[]:无法通过socket'/var/lib/mysql/mysql.sock'(2)连接到本地mysql服务器在第29行的/home/content/78/11658278/html/overlay.php中

警告:mysql_query()[]:无法在第29行的/home/content/78/11658278/html/overlay.php中建立到服务器的链接

…null
Arg我复制了其他人的php文件的结尾来执行该操作,但忘记了检查它是mysqli还是mysql。我在mysqli的其他地方完成了该操作(这就是为什么它是一半和一半),应该是我自己写的>@sage88,我使用Firebug和Firefox进行开发和调试。FB有一个方便的网络标签,可以跟踪所有进出的网络流量。太棒了,谢谢。我一直在考虑切换到现在的开发,现在我相信这会更好。再次感谢!
  $mysqli = mysqli_connect($hostname, $username, $password, $database);
  if(mysqli_connect_errno($mysqli)) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $qry = "
    SELECT paint_id, paint_name, paint_date, paint_media, paint_dim, paint_file 
    FROM paintings
    WHERE paint_id = '1'
  ";

  $results = mysqli_query($mysqli, $qry);
  $row = mysqli_fetch_assoc($results);    

  echo json_encode($row);
?>