2012-04-27 69 views
1

的Lucene/Solr的即时发展我是新来的如jQuery,AJAX,PHP等使用jQuery/PHP/AJAX/JSON

我建立一个谷歌即时类似功能的用户界面技术。我的后端搜索引擎基础结构非常快,即使是超快速的Tera字节数据也能返回结果。

我有一个类中的PHP函数,返回我的数组:

solrsearch.php 

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

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

当我干即控制台上(而不是在浏览器)与测试线运行它,而不是使用$ Q输入变量的一切似乎都很好,我打印$找到并打印值。

现在用嵌入的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查找功能打印$ q和它没有打印,这意味着该值是没有得到来自search_json.php传递的值,但是我可以看到Fiddler上的GET请求。

+0

你有没有尝试使用$ .getJSON而不是$不用彷徨,因为它是比较合适的,如果你期待JSON数据,并保证,如果JSON是正确的,你会得到一个对象作为数据。回调函数是否实际执行?你有没有尝试console.log数据看看它是否正确? – GillesC 2012-04-27 11:37:09

+0

@gillesc:感谢您的帮助。其实这个查询并没有被传递到UI中找到solrsearch.php的函数。 – Yavar 2012-04-27 11:49:35

回答

0

我想这条线:

  • html += '</html>';

应该

  • html += '</table>';

顺便说一句,而不是使用$('#results').replaceWith(html);尝试机智h $('#results').html(html);

被编辑: 而不是$ .get(),尝试使用$。阿贾克斯():

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

感谢您的帮助。我在我的问题中编辑了html中的正文部分。我试过这些东西,但没有工作。 – Yavar 2012-04-27 11:43:44

+0

我已经用一些更相关的调试信息编辑了我的问题。 – Yavar 2012-04-27 11:47:00

+0

尝试从您的javascript代码中移除这两行代码'html ='

';'和'html + ='
';' – jMn 2012-04-27 11:51:42

0

如果您的前端使用HTML你一定要采取AJAX-SOLR看看

AJAX的Solr是一个JavaScript库,用于创建用户界面以Apache Solr实现