2013-03-17 197 views
2

以後我不使用下面的腳本空數據返回PHP AJAX

$(document).ready(function() { 
    $('.autosuggest').keyup(function() { 
     var search_term = $(this) .attr('value'); 
     $.post('search.php', {search_term:search_term}, function(data) { 
      alert(data); 
     }); 

    }); 
}); 

並使用下面的PHP代碼

<?php 
include('system/includes/db_connect.php'); 
if (isset($_POST['search_term']) == true && empty($_POST['search_term']) == false) { 

    $search_term = mysql_real_escape_string($_POST['search_term']); 
    $query = mysql_query("SELECT username FROM promoties WHERE username LIKE '$search_term%'"); 
    while (($row = mysql_fetch_assoc($query)) !== false) { 
     echo '<li>', $row['username'], '</li>'; 
    } 
} 
?> 

後得到任何數據警報如果我把「測試」的警報,它只是正常工作,但如果我提醒數據,它會給出一個空的警報框。

我還測試了它自己的PHP代碼,它完美的作品..

有什麼不對?謝謝!

+0

在討論您的潛在SQL注入問題之前。您是否嘗試設置顯式將'dataType'設置爲''html'',如$ .post('search.php',{search_term:search_term},function(data){...},「html」); '? – Alexander 2013-03-17 17:10:52

+0

嘗試在PHP文件的開頭測試'echo $ _POST ['search_term']'。 – Qiao 2013-03-17 17:15:22

回答

2

如果您.autosugest是輸入(我認爲這是)......你需要

以獲得其數值替換該

var search_term = $(this) .attr('value');  

通過

var search_term = $(this) .val(); 

attr()是這裏不需要

+0

非常感謝! :)解決了問題! – 2013-03-17 17:22:07

+0

welocme ....快樂編碼.. – bipen 2013-03-17 17:23:07

1
Use simple falsy value check. 

if(isset($_POST['search_term']) && !empty($_POST['search_term'])) { 
     // code here 
} 

或 在for循環之前寫一些回顯。這將測試您的查詢是否正在執行。