2011-07-11 51 views
0

我有一個小問題。我想進行自動搜索,但是我的webrequest(自動)結果和結果(如果我只是輸入)之間存在差異。Webrequest未完全工作

我希望結果完全一樣,結果應該是我在輸入時得到的結果。

代碼的請求:

function showUser(str, str2) 
{ 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
} 
} 
xmlhttp.open("GET", "klanttabel.php?search=" + encodeURIComponent(str) + "&search2=" +  encodeURIComponent(str), true); 
xmlhttp.send(); 
} 

代碼查詢(至極給了我正確的結果)

if($search != ''){ 

$where[] = "(klant_id LIKE '%" .$search."%' OR voornaam LIKE '%" .$search."%' OR  achternaam LIKE '%" .$search."%' OR email LIKE '%"  .$search."%' OR plaats LIKE '%" .$search."%' OR bedrijfsnaam LIKE '%" .$search."%') "; 

if($search2 != ''){ 
$where[] = " (klant_id LIKE '%" .$search2."%' OR voornaam LIKE '%" .$search2."%' OR achternaam LIKE '%" .$search2."%' OR email LIKE '%" .$search2."%' OR plaats LIKE '%" .$search2."%' OR bedrijfsnaam LIKE '%" .$search2."%') "; 
} 
$query_where = (is_array($where))?" WHERE ".implode(" AND ", $where):""; 
$result = mysql_query("SELECT * FROM klant ".$query_where." ORDER BY klant_id DESC"); 
$i = 0; 
} 

我有兩個輸入字段,這樣就可以搜索兩個不同的值。當我輸入並按回車鍵時,它會給我相應的結果。

但是,如果我讓它自動執行,它只是從我輸入的最後一個字段給出結果。

所以基本上,它只是搜索最後一個字段。我認爲這是與我的輸入字段,所以這裏是該代碼:

<form method="get"> 
<input onfocus="this.value=''" type="text" name="search" value="Naam..." onkeyup="showUser(this.value)"></input><br /> 

<input onfocus="this.value=''" type="text" name="search2" value="Plaats..." onkeyup="showUser(this.value)"></input><input type="submit" value="zoeken" name="submit2" </input></form> 
+0

你可能要縮進你的代碼,並使用像jQuery庫來執行的請求。它肯定會讓你的生活更輕鬆。 – pimvdb

+0

好的, 但我應該怎麼做?我沒有任何jQuery的經驗... – Andre

+0

轉到http://jquery.com並下載庫。關於你想做什麼的基礎知識有一些很好的教程。另一個庫是yui - http://developer.yahoo.com/yui/ –

回答

0

更好的解決方案,而不是使用本地XMLHttpRequests和所有其他解決方法是jQuery.ajax。此外,其他事情:

  • 輸入元素沒有關閉</input>

一個適用於jsFiddle的修改示例:http://jsfiddle.net/e9drS/

HTML:

<form id="form"> 
    <input type="text" id="search" name="search" value="Naam..." /> 

    <br /> 

    <input type="text" id="search2" name="search2" value="Plaats..." /> 

    <input type="submit" value="zoeken" /> 
</form> 

的JavaScript:

$(function() { 

$('#search, #search2').focus(function() { // clear on focus 
    $(this).val(''); 
}).keyup(function() { // perform request on keyup 
    $.ajax({ type: 'GET', 
      url: 'klanttabel.php', 
      data: { search: $('#search').val(), 
        search2: $('#search2').val() }, 
      success: function(text) { 
       $("#txtHint").html(text); 
      } 
      }); 
}); 

}); 
+0

這根本不起作用。我下載了jquery.js,並將它包含在下面:'' 我有你所發佈的js代碼... – Andre

+0

@Andre Woons:你實際上必須將函數包裝到'$(function(){...})',以便在頁面加載完成時調用這些函數。 – pimvdb

+0

嗯,它仍然無法正常工作.. :( – Andre