2016-04-20 136 views
-1

我想創建一個阿賈克斯函數來重新加載一個<div>而不是整個頁面。阿賈克斯搜索輸入字段

什麼是工作: - 在寫入輸入字段時,div會在每個字符正確後重新加載。

什麼不工作: - 當輸入字段再次完成空時,它不顯示我在數據庫中的全部條目。

這是我在PHP文件,其中DIV是:

function showGames(str) { 
if (str == "") { 
    document.getElementById("searchgame").innerHTML = ""; 
    return; 
} else { 
    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("show").innerHTML = xmlhttp.responseText; 

     } 
    }; 

    xmlhttp.open("GET","searchgame.php?game="+str,true); 
    xmlhttp.send(); 
} } 

這是我在search.php中

<?php 

include 'test/database.php'; 

$pdo = Database::connect(); 

if($_GET['game'] == "") { 
    $sql="SELECT * FROM games WHERE active=1"; 
    echo "<script type='text/javascript'>alert('Should be empty')</script>"; 

} else { 
    $q = $_GET['game']; 
    $sql="SELECT * FROM games WHERE gamenamelong LIKE '%".$q."%'"; 
} 

$stmt = $pdo->prepare($sql); 

$stmt->execute(); 
$gameResults = $stmt->fetchAll(PDO::FETCH_ASSOC); 
$rowCount1 = count($gameResults); 

是否有人能幫助我嗎? 謝謝!

+1

那是因爲你的第三行的!當搜索字符串爲空時,你正在em格式化div,並且不要擊中ajax – Jeff

+0

Hoi Jeff,即使當我正在修改第三行時,在清空輸入字段後它不工作。 – Roman

回答

0

因爲我們不知道你的表單是怎麼樣的,怎麼調用函數showGames怎麼樣,我只能給出一個模糊的答案。但你的主要問題/ misstake應與解決:

在你的函數showGames你從不打阿賈克斯如果搜索字符串是空的,所以你不能回來所有結果。

所以我建議更改功能,像這樣:

function showGames(str) { 
    if (str == "") { 
     document.getElementById("searchgame").innerHTML = ""; 
     //remove that: return; 
    } 
    // remove the 'else { ' 

    // now you allways hit the ajax 
    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("show").innerHTML = xmlhttp.responseText; 

    } 
    }; 

    xmlhttp.open("GET","searchgame.php?game="+str,true); 
    xmlhttp.send(); 
// remove closing bracket of if-else: '}' 
} 
+0

嗨,傑夫,再次感謝您的幫助。我刪除它,但仍然無法正常工作。這是我使用的形式爲:

\t \t \t \t \t <輸入名稱= 「searchgame」 的onkeydown = 「showGames(THIS.VALUE)」 類型= 「文本」 類= 「形式控制隱藏XS」 佔位符=」搜索遊戲...「> \t \t \t \t \t
...奇怪的行爲,我看到了它,當我把它的第一個字母它不會直接傳遞到PHP文件。在寫完第二個字母后,我可以看到第一個字母被傳送了。希望你能跟隨? – Roman