0

背景:我正在尝试在搜索框中的 keyup 上运行一些 AJAX,该搜索框将转到数据库进行查找,然后在不刷新页面的情况下返回结果。

问题:我不确定它是否真的连接到我的数据库。我已经使用THIS METHOD测试了连接,它说它对于我正在使用的凭据是成功的。但是,我可以将主机从locahost更改为www.MYDOMAINNAME.com或我的 cPanel 中的服务器名称,它仍然说它是一个成功的连接。如果它成功了,那为什么它不运行我的 SQL 呢?

问题:我下面的代码有问题吗?如果没有,我有没有更好的方法来测试发生了什么?

注意:我的控制台中的输出是“错误 [object Object]”。它成功地击中了 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);
?>
4

2 回答 2

0

只需导航并直接运行 php 代码,而不是依赖 AJAX 调用来测试。如果有连接错误,那么它应该显示在浏览器的 echo 语句中。

确保您有 php 错误报告正在运行。

于 2013-10-30T06:03:11.873 回答
0

尝试将 AJAX 调用数据参数更改为此

data: { 'query':query }

我认为这应该有效

于 2013-10-30T06:23:50.650 回答