2016-06-22 14 views
1

私は自分のHTMLにあるタグ入力内の値(またはそのようなもの)を取りたいと思います。タグ入力からtwitterへの値の取得先読みjs

<input name="search" id="search" type="text" class="typeahead"/> 

と私はすでに私のスクリプトに、このような何かをしたが、それはうまくいきませんでした:ここで入力タグだ場合のsearch.phpに

var labels = new Bloodhound({datumTokenizer: function(labels) { 
return Bloodhound.tokenizers.whitespace(labels); }, 
queryTokenizer: Bloodhound.tokenizers.whitespace, 
remote: { 
url: "http://localhost/codepen/search.php?term="+document.getElementsByTagName("input")[0].value, 
filter: function(response) { 
    return response.labels; 
}}}); 

labels.initialize(); 

$('#search.typeahead').typeahead({ 
hint: true, 
highlight: true, 
minLength: 1 
}, { 
name: 'labels', 
displayKey: function(labels) { 
return labels.label; 
}, 
source: labels.ttAdapter() 
}); 

が必要とされている:

<?php 
$search = $_GET["term"]; 
require_once("sparqllib.php"); 
error_reporting(E_ERROR); 
$db = sparql_connect("http://localhost:3030/DOID/sparql"); 
if(!$db) { print sparql_errno() . ": " . sparql_error(). "\n"; exit; } 
sparql_ns("owl","http://www.w3.org/2002/07/owl#"); 
sparql_ns("rdfs","http://www.w3.org/2000/01/rdf-schema#"); 
sparql_ns("obo","http://purl.obolibrary.org/obo/"); 

$sparql = 'SELECT DISTINCT ?class ?label ?description 
     WHERE { ?class a owl:Class . 
     OPTIONAL { ?class rdfs:label ?label} 
     OPTIONAL { ?class obo:IAO_0000115 ?description} 
     FILTER regex (?label,"'.$search.'", "i")}'; 
$result = sparql_query($sparql); 
if(!$result) { print sparql_errno() . ": " . sparql_error(). "\n"; exit; } 

$fields = sparql_field_array($result); 

$resultarray = array(); 

while($row = sparql_fetch_array($result)){ 

    array_push($resultarray,array("label"=>$row['label'])); 
} 
echo json_encode(array('labels'=>$resultarray)); 
?> 

助けていただければ幸いです。あなたは、URLが静的な文字列であることを持っていることを見ることができます https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md

:ここtypeheadのドキュメントからの読み取り

+0

なぜdocument.getElementById( 'search')を使用しないのですか。 ?また、生成されたajaxのURLは何ですか? (Google Chromeの[ネットワーク] - [XHR]タブには表示されません)。私の推測では、あなたのコードが実行されるときにURLが再生成されないので、入力値(ページがロードされるとnullになります) –

+0

代わりに 'document.getElementById(" search ")。 – Hackerman

+0

すでにそれも行いましたが、まだ動作していません。まあ、私も同じことを推測していたが、私はどのようにページが読み込まれた後に入力を取るか分からない。 @AntoineGuillien –

答えて

0

関数であるprepareオプションがクエリの準備に使用されます。

ワイルドカードパラメータは、準備のための便利なオプションとして使用されます。このオプションが設定されている場合、prepareはurlのこのオプションの値をURIエンコードされたクエリに置き換える関数になります。

var labels = new Bloodhound({datumTokenizer: function(labels) { 
return Bloodhound.tokenizers.whitespace(labels); }, 
queryTokenizer: Bloodhound.tokenizers.whitespace, 
remote: { 
url: "http://localhost/codepen/search.php?term=%QUERY", 
wildcard: "%QUERY", 
filter: function(response) { 
    return response.labels; 
}}}); 

labels.initialize(); 
... 

が、それはあなたの問題を解決ホープ:

hereは、だから私はあなたのコードがあるべきと思います参照してください!

+0

アントワーヌのおかげでありがとう、魅力的です。 –

関連する問題