当用户在实时Ajax搜索中输入空格时,我遇到了问题,它没有显示任何结果。当用户只键入一半没有空格的单词时,它可以正常工作。我认为它与Ajax有关,但在这里找不到任何解决方案..也许你可以提出建议......谢谢。
的Ajax:
function ajaxFunction(str)
{
var httpxml;
try
{
// Firefox, Opera 8.0+, Safari
httpxml = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
httpxml = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
httpxml = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
function stateChanged()
{
if (httpxml.readyState == 4)
{
document.getElementById("displayDiv").innerHTML = httpxml.responseText;
document.getElementById("msg").style.display = 'none';
}
}
var url = "search-ajax.php";
url = url + "?txt=" + str;
url = url + "&sid=" + Math.random();
httpxml.onreadystatechange = stateChanged;
httpxml.open("GET", url, true);
httpxml.send(null);
document.getElementById("msg").innerHTML = "Please Wait ...";
document.getElementById("msg").style.display = 'inline';
}
搜索ajax.php:
error_reporting(0);
require "search_con.php";
$in = $_GET['txt'];
if (!ctype_alnum($in)) {
echo "";
exit;
}
$msg = "";
$msg = "<div id=results style=position:absolute;z-index: 10;right:0px;background-color:#302b2b;>";
if (strlen($in) > 0 and strlen($in) < 20) {
$sql = "SELECT * FROM products WHERE name LIKE '%$in%' LIMIT 17";
foreach ($dbo->query($sql) as $nt) {
$name = $nt['name'];
$msg .='<div>' . $name . '<div>';
}
}
$msg .='</div>';
echo $msg;
它可能是什么?感谢您的所有建议:)
答案 0 :(得分:0)
您必须删除PHP脚本中txt
的前导和尾随空格:
$in = trim($_GET['txt']);
答案 1 :(得分:0)
如果文本包含空格,函数ctype_alnum将返回false。那么也许你的脚本停在那里?
$in = $_GET['txt'];
//always occurs when a space is in the $in variable.
if (!ctype_alnum($in))
{
echo "";
exit;
}
确保在进行检查之前使用trim()。该检查还将停止搜索文本中的文本,如文本中的空格,如“新年”。
答案 2 :(得分:0)
解决了,我意识到我不需要这段代码。
if (!ctype_alnum($in)) {
echo "";
exit;
}