2012-04-27 65 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實現