1

JQuery、AJAX、PHP などの UI テクノロジは初めてです。

Google インスタントのような機能を構築しています。バックエンドの検索エンジン インフラストラクチャは非常に高速で、テラ バイトのデータでも非常に短時間で結果を返します。

クラスに配列を返す PHP 関数があります。

solrsearch.php

    class SolrSearch{
        ...
        ...
        public function find( $q ){
           ...
           ...
           return $found;
        }
    }

$found is a key value pair something like documentID=>Data

テスト文字列を使用して(ブラウザーではなく)コンソールでドライランすると、 $q 入力変数を使用せずにすべて問題ないように見え、 $found を出力して値を出力します。

これで、javascript が埋め込まれた html ファイルは次のようになります。したがって、基本的にここでは、テキスト ボックスでキーを押すたびにキャプチャし、get 要求を実行しています。

testjson.html

    <html>
    ...
    <body>

    <div align="center"><p><font size = 7 face="Verdana"> Search: <input type="text" id="term" size = 60 style="font-size:22pt"/>
    <table id="results">
    </table>
    <script>
    $(document).ready( function() {
    $('#term').keyup( function() {
      $.get('search_json.php?q='+escape($('#term').val()), function(data) {
        html = '<table id="results">';
        $.each( data, function( index, val ) {
            html += '<tr><td class="document"><b>'+index.key+'</b>&nbsp;';
            html += 'Dated '+val.value+'</td></tr>';
        } );
        html += '</html>';
        $('#results').replaceWith( html );
      } );
    } );
    } );
    </script>
    ...
    ...
    </html>

そして最後にこれが私のものです

search_json.php

$s = new SolrSearch();
print json_encode( $s->find( $_REQUEST['q'] ) );

json でエンコードされた文字列でさえ完全に正常に機能し、json をコンソール (ブラウザーではなく) に出力します。

私が直面している問題は次のとおりです。ブラウザで、textBox だけを持つ testjson.html を実行し、いくつかの文字列を入力すると、ブラウザに結果が表示されません。Fiddler (HTTP Debugging Proxy) を使用してデバッグすると、AJAX get リクエストが表示されます。

どんな助けでも大歓迎です。必要な質問に追加できるものが他にある場合は、喜んでそれを行います.

編集:

solrsearch.php の find 関数で $q をさらにデバッグして出力しましたが、値が出力されませんでした。これは、値が search_json.php から渡されていないことを意味しますが、Fiddler で GET 要求を確認できます。

4

2 に答える 2

0

私はこの行を推測します:

  • html += '</html>';

する必要があります

  • html += '</table>';

ちなみに、trywithを使う代わり$('#results').replaceWith( html );$('#results').html( html );

編集:$。get()の代わりに、$。ajax()を試してください:

$.ajax({
   url: 'search_json.php',
   type: 'POST',
   data: { q: escape($('#term').val() },
}).done(function(resp) {
   //Your html code with response options
});
于 2012-04-27T11:37:23.740 に答える