【发布时间】:2025-12-22 20:20:15
【问题描述】:
几天后我和老师一起做了一个自动完成输入!
现在我再次尝试测试它,但它突然不再工作了!
我的老师现在要离开一段时间了,所以我必须一个人尝试。
但我只是不知道如何解决这个问题。(是的,我真的试过了。)
它确实给出了$_GET。(所以这不是问题)
jQuery:
var element = '';
function split( val ) {
return val.split( /,\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
function getSearchlocation( ) {
return $(element).data('searchlocation');
}
$( ".tag" ).bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).autocomplete( "instance" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
source: function( request, response ) {
$.getJSON( 'checklistHandler.php', {
term: extractLast( request.term ),
searchlocation: getSearchlocation( )
}, response );
},
search: function() {
var term = extractLast( this.value );
element = this;
if ( term.length < 2 ) {
return false;
}
},
focus: function() {
return false;
},
select: function( event, ui ) {
var terms = split( this.value );
terms.pop();
terms.push( ui.item.value );
terms.push( "" );
this.value = terms.join( ", " );
return false;
}
});
处理程序:
if ($_GET['term']) {
if($_GET['searchlocation']=='cursus')
{
$table = 'flexibel';
$column = 'app';
}
elseif($_GET['searchlocation']=='boek')
{
$table = 'boeken';
$column = 'naam';
}
else
{
exit;
}
$search = $_GET['term'];
$query = mysql_query("SELECT ".$column." FROM ".$table." WHERE ".$column." LIKE '%".$search."%'");
$result = array();
$i=0;
while($r = mysql_fetch_assoc($query))
{
$result[] = array('id'=>$i, 'label'=>$r[$column], 'value'=>$r[$column]);
$i++;
}
echo json_encode($result);
}
输入:
if ($onderdeel['formInputType'] == 'autocomplete')
{
?>
<tr>
<input type="hidden" name="buildingblock[<?=$onderdeel['formBuildingBlockId']?>][formBuildingBlockId]" value="<?=$onderdeel['formBuildingBlockId']?>">
<td class="<?= $class ?>" width="320" style="vertical-align: middle;"><?= $onderdeel['formInputLabel'] ?><?=($onderdeel['formRequired'] == 'on' ? '<img title="Verplicht Veld" alt="Verplicht Veld" style="position: relative; top: -10px; height: 5px; width: 5px;" src="'.IMG.'/asterisk_orange.png">' : '')?></td>
<td class="<?= $class ?>" width="320"><textarea style="min-width: 212px; max-width: 212px;" class="tag" data-searchlocation="<?=$onderdeel['formInputOptions']?>" name="buildingblock[<?=$onderdeel['formBuildingBlockId']?>][content]" <?=($onderdeel['formRequired'] == 'on' ? 'required' : '')?>><?=$onderdeel['formContent']?></textarea></td>
<td class="<?= $class ?>" width="60" style="vertical-align: middle; text-align: center;"><input type="checkbox" name="buildingblock[<?=$onderdeel['formBuildingBlockId']?>][checked]" value="1"<?= ($onderdeel['formContentChecked'] == 1 ? ' checked="checked"' : '') ?> /></td>
<td class="<?= $class ?>" width="60" style="vertical-align: middle; text-align: center;"><a href="checklistHandler.php?delete_vraag=<?=$test?>"></a></td>
</tr>
<?
}
请求的响应是:[{"id":0,"label":"Excel Basis","value":"Excel Basis"},{"id":1,"label":"Excel Essentials","value":"Excel Essentials"},{"id":2,"label":"Excel Gevorderd","value":"Excel Gevorderd"},{"id":3,"label":"Excel: Analyse en Rapportage","value":"Excel: Analyse en Rapportage"},{"id":4,"label":"Excel: Draaitabellen en Grafieken","value":"Excel: Draaitabellen en Grafieken"},{"id":5,"label":"Excel: Functies en Formules","value":"Excel: Functies en Formules"},{"id":6,"label":"Excel: Koppelingen en Macro\u2019s ","value":"Excel: Koppelingen en Macro\u2019s "},{"id":7,"label":"Flexibele cursussen","value":"Flexibele cursussen"},{"id":8,"label":"Word: Complexe Documenten","value":"Word: Complexe Documenten"}]
我希望你能帮助我解决问题。
你好,
马修。
【问题讨论】:
-
您的浏览器开发者控制台以及页面本身出现了哪些错误?
-
没有问题。它说一切顺利!
-
那么什么不起作用,请指定。您希望发生的事情没有发生。
-
当你输入 3 个字母,如
Exc时,需要列出我从数据库中获取的项目列表并将其放入列表中! -
看起来容易受到 sql 注入的影响,也请查看 prepared statements。
标签: php jquery ajax json autocomplete