0

次のリンクがクリックされたときにデータベースからデータを表示するはずの次のコードを機能させようとしています:(ページを更新せずに)

<a id="bugatti_link" href="#" database_id="Bugatti">Bugatti</a> 

残念ながら、それは機能していません。何も表示されておらず、エラーも発生していません。

index.php =

<a id="bugatti_link" href="#" database_id="Bugatti">Bugatti</a>

<script>
$("#bugatti_link").click(load_ajax);

function load_ajax(e) {
    var link = $(e.target); 
    var vehicle_database_id = link.attr("database_id");
    var ajax_params = {"brand": vehicle_database_id};
    $.getJSON("query2.php", ajax_params, success_handler)
}

function success_handler(data) {
    //data variable contains whatever data the server returned from the database.
    //Do some manipulation of the html document here. No page refresh will happen.
}
</script>

query2.php =

<?php
$host = "xx";
$user = "xx";
$db   = "xx";
$pass = "xx";

$pdo = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);

$rows = array();
if(isset($_GET['brand'])) {
    $stmt = $pdo->prepare("SELECT brand FROM cars WHERE brand = ? ");
    $stmt->execute(array($_GET['brand']));
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
echo json_encode($rows);
?>
4

2 に答える 2

2

JSONデータを「success_handler」に渡しますが、データはその関数内で処理されません

于 2012-07-09T12:56:41.230 に答える
0

$.getJSON コードに .error が追加されていることに注意してください。リクエストが失敗した場合は、その理由がわかります。応答がありましたが、問題がある可能性があり、これでわかります。サイレントに失敗する理由については、以下のメモを参照してください。

また、コードの周りに $(document).ready ラッパーを追加すると、内部で JavaScript を実行する前にページが完全に読み込まれるようになるため、最適です。ブラウザと要素のネスト方法によっては、イベントを添付する準備が整っている場合とそうでない場合があります。いずれにせよ、いつでも確認できるように、ドキュメントに記載しておくことをお勧めします。

$(document).ready( function(){
    $("#bugatti_link").click(function(e){
        e.preventDefault();
        var vehicle_database_id = $(this).attr("database_id");
        var ajax_params = {"brand": vehicle_database_id};
        $.getJSON("query2.php", ajax_params, function(data){
            //data variable contains whatever data the server returned from the database.
            //Do some manipulation of the html document here. No page refresh will happen.
        })
        .error(function(data,msg,error){
            alert( msg );
        });
    });
})

重要: jQuery 1.4 の時点で、JSON ファイルに構文エラーが含まれている場合、リクエストは通常​​、サイレントに失敗します。このため、JSON データを頻繁に手動で編集することは避けてください。JSON は、JavaScript のオブジェクト リテラル表記よりも厳密な構文規則を持つデータ交換形式です。たとえば、JSON で表されるすべての文字列は、プロパティであるか値であるかにかかわらず、二重引用符で囲む必要があります。JSON 形式の詳細については、http://json.org/を参照してください。

于 2012-07-09T13:57:09.127 に答える