后台:我正在尝试在搜索框中运行一些AJAX,该搜索框将转到数据库进行查找,然后返回结果而不刷新页面。
问题:我不确定它实际连接到我的数据库。我已经使用THIS METHOD测试了连接,并且说它对我正在使用的凭据是成功的。但是,我可以将主机从 locahost 更改为 www.MYDOMAINNAME.com 或来自我的cPanel的服务器名称,它仍然表示它是一个成功的连接。如果它成功了,那为什么不运行我的SQL?
问题:我的代码下面是否有问题,如果没有,是否有更好的方法来测试正在发生的事情?
注意:我的控制台中的输出是“错误[对象对象]”。它成功地击中了search.php,所以我认为这不是文件路径问题。我还在页面加载上运行PHP而不是通过AJAX执行它,一切似乎都运行得很好。当我对 $ query 的值进行硬编码时,我得到了一些结果。
文件结构:
(ROOT FOLDER)
index.php (where the form is)
(PHP FOLDER)
search.php
(JS FOLDER)
search.js
HTML:
<form action="php/search.php" method="post">
<input type="search" class="main-search" name="query" />
<div class="btn btn-lg btn-primary">Search</div></form>
</form>
jQuery的:
$(function() {
$(".main-search").keyup(function() {
search($(this).val());
});
});
function search(query) {
$.ajax({
url:"./php/search.php",
type:"POST",
dataType:"json",
data: { query:query },
success: function(data) {
$(".result").html(data);
},
error: function(data) {
$(".result").html(data);
}
});
}
PHP:
<?php
$query = $_POST["query"];
$link = mysqli_connect('localhost', 'USER', 'PASS') or die ('Error connecting to mysql: ' . mysqli_error($link));
mysqli_select_db($link, 'DB_NAME');
/* check connection */
if (mysqli_connect_errno()) {
echo mysqli_connect_error();
exit();
}
/* Select queries return a resultset */
if ($result = mysqli_query($link, "SELECT actual FROM icons WHERE synonym = '$query'")) {
$row = mysqli_fetch_array($result);
echo $row["actual"];
mysqli_free_result($result);
}
else {
echo "No results found.";
}
mysqli_close($con);
?>
答案 0 :(得分:0)
直接导航并运行php代码,而不是依靠AJAX调用来测试。如果存在连接错误,则应在浏览器的echo语句中显示该错误。
确保运行php错误报告。
答案 1 :(得分:0)
尝试将AJAX调用数据参数更改为此
data: { 'query':query }
我认为这应该有用