我是 JQuery、AJAX、PHP 等 UI 技术的新手。
我正在构建类似 Google Instant 的功能。我在后端的搜索引擎基础设施非常快,即使是 Tera Bytes 的数据也能以超快的速度返回结果。
我在一个类中有一个 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 文件看起来像这样,所以基本上在这里我捕获文本框上的每个按键并执行获取请求
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> ';
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 请求。