0

背景:検索ボックスでキーアップ時に AJAX を実行しようとしています。これは、検索のためにデータベースに移動し、ページを更新せずに結果を返します。

問題:実際にデータベースに接続されているかどうか確信が持てません。THIS METHODを使用して接続をテストしましたが、使用している資格情報に対して成功したと表示されます。ただし、ホストをlocahostからwww.MYDOMAINNAME.comに変更するか、cPanel からサーバー名を変更しても、接続は成功したと表示されます。成功した場合、SQL が実行されないのはなぜですか?

質問:以下のコードに何か問題がありますか? そうでない場合、何が起こっているかをテストするためのより良い方法はありますか?

注:私のコンソールの出力は "Error [object Object]" です。正常にsearch.phpにヒットしているので、ファイルパスの問題ではないと思います。また、AJAX を使用する代わりに、ページの読み込み時に PHP を実行したところ、すべて正常に動作しているように見えました。$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

AJAX 呼び出しデータ パラメータをこれに変更してみてください

data: { 'query':query }

これはうまくいくはずだと思います

于 2013-10-30T06:23:50.650 に答える