编辑:我已经把所有东西都切换到了 mysqli。我有另一个脚本可以在 mysqli 中正确完成所有操作,但是我匆忙复制了别人的一部分,却没有注意到它是在 mysql 中完成的。看来这解决了这个问题,谢谢大家!我在下面编辑了我的代码,以便它可以用作任何遇到类似问题的人的资源。
我在让 ajax 在 Godaddy 共享主机帐户上工作时遇到了一些麻烦。我以前在另一台服务器上使用过它,没有任何问题,所以我认为 Godaddy 服务器有点奇怪,尽管我很高兴是不正确的。我首先尝试在 perl 中编写此代码,但结果证明 godaddy 不支持 JSON.pm,所以我切换到 php,因为这似乎是 godaddy 的首选语言。我仍然在 ajax 调用中抛出错误。
这是每个部分的玩具版本。HTML 中唯一相关的部分是对 overlay.js 的调用和测试 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>
我知道 jQuery 部分正在工作,因为我已经使用 jQuery DOM 选择进行了测试并且它可以工作(测试 id 已按预期进行修改)。基本上,如果一切正常,应该发生的所有事情都是一个显示“功能”的警报。但是,我总是收到一条错误消息:
Failed to perform AJAX call! textStatus: (parsererror) and errorThrown: (SyntaxError: Unexpected token <)
我认为这个错误与godaddy对json做了一些奇怪的事情有关,但我可能是错的。当我注释掉 dataType: 'json' 行时,警报确实说功能。如果这实际上是问题,我不确定“<”会来自哪里?
覆盖.js
$(function() {
$('#test').text( "text yes?" );
$.ajax({
url: 'overlay.php',
data: "",
dataType: 'json',
success: function(data, textStatus, jqXHR) {
alert("FUNCTIONAL");
},
error: function(jqXHR, textStatus, errorThrown){
alert("Failed to perform AJAX call! textStatus: (" + textStatus +
") and errorThrown: (" + errorThrown + ")");
}
});
});
根据 Chrome 开发者工具,ajax 调用运行 overlay.php 没有任何错误。我知道我拥有的数据库连接工作正常,因为它已经在其他地方进行了测试。我知道我的查询有效,因为它已经在 SSH 的服务器上进行了测试。我认为此文件中可能没有任何错误,但我再次接受建议,因为这让我发疯。
覆盖.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 是: http: //www.carltomasedwards.com/painting2.php
我在 godaddy 的 php.ini 文件中启用了 json。我还联系了他们寻求支持,那家伙完全一无所知。为了让 ajax 调用在 Godaddy 上工作,还需要做些什么特别的事情吗?为什么错误提示“<”符号出现在 json 中?任何帮助表示赞赏!