php - 使用 jQuery/PHP/AJAX/JSON 进行 Lucene/Solr 即时开发

标签 php javascript jquery ajax json

我对 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

这是我面临的问题:在浏览器上运行 testjson.html 时,它只有一个文本框,并且我输入一些字符串,因此我不会在浏览器上显示任何结果。当我使用 Fiddler(HTTP 调试代理)对其进行调试时,我可以在其中看到 AJAX 获取请求。

如有任何帮助,我们将不胜感激。如果还有什么我可以添加到所需问题中的内容,我将非常乐意这样做。

编辑:

我在 solrsearch.php 的 find 函数中进一步调试并打印了 $q ,它没有打印该值,这意味着该值没有从 search_json.php 传递,但是我可以在 Fiddler 上看到 GET 请求。

最佳答案

我猜这一行:

  • html += '</html>';

应该是

  • html += '</table>';

顺便说一句,不要使用 $('#results').replaceWith( html );尝试使用 $('#results').html( html );

编辑: 尝试使用 $.ajax() 代替 $.get():

$.ajax({
   url: 'search_json.php',
   type: 'POST',
   data: { q: escape($('#term').val() },
}).done(function(resp) {
   //Your html code with response options
});

关于php - 使用 jQuery/PHP/AJAX/JSON 进行 Lucene/Solr 即时开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349852/

相关文章:

javascript - Stubhub 像 HTML5 中的 map ?

JQUERY UI - 根据验证选择选项卡

php - 使用 PHP 解析亚马逊 MWS 产品 API XML

php - Laravel 响应 Cache-Control header 始终包含 'no-cache'

javascript - 幻灯片不接受固定高度

javascript - 如何在 JavaScript 中检索多行注释中的字符串内容

javascript - 为什么我会收到 'Uncaught TypeError' 错误?

php - 使用 php 使用 getElementsByTagName 检索 rss 图像

php - 如何转储 SoapClient 请求进行调试?

javascript - 调用按钮的点击处理程序