Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax自动完成不';t返回正确的值_Javascript_Php_Jquery_Ajax_Autocomplete - Fatal编程技术网

Javascript Ajax自动完成不';t返回正确的值

Javascript Ajax自动完成不';t返回正确的值,javascript,php,jquery,ajax,autocomplete,Javascript,Php,Jquery,Ajax,Autocomplete,我有一个ajax自动完成,它返回用户的全名。但是,当存在某些名称或值相同的实例时,它不会返回正确的值。相反,它返回下拉列表中的第一个值。即使它有4次相同的出现,它仍然返回第一个值 当我单击Stannis Arryn Baratheon时,它返回Stannis Targryen Baratheon 以下是我的php代码(sql/php代码;ad.php): 您的代码当前正在使用#result中的classreturnName收集所有元素,通过在该集合上调用.html(),jQuery将只返回找到

我有一个ajax自动完成,它返回用户的全名。但是,当存在某些名称或值相同的实例时,它不会返回正确的值。相反,它返回下拉列表中的第一个值。即使它有4次相同的出现,它仍然返回第一个值

当我单击Stannis Arryn Baratheon时,它返回Stannis Targryen Baratheon

以下是我的php代码(sql/php代码;ad.php):


您的代码当前正在使用
#result
中的class
returnName
收集所有元素,通过在该集合上调用
.html()
,jQuery将只返回找到的第一个元素的html。您的
returnID
搜索也是如此。这就是为什么您只获得第一个返回的条目

修改#result click处理程序,使其仅触发类为show
的元素,因为该元素将包含数据

jQuery("#result").on("click", ".show", function(e){
然后,您只需使用class
returnName
returnID
搜索元素,然后调用
.text()

总而言之

jQuery("#result").on("click", ".show", function(e){
    var showName = $('.returnName',this).text();
    var showId = $('.returnID',this).text();
    $('#search_keyword_id').val(showName);
    $('#resID').val(showId);
});
不过请注意,可能有更好的方法返回数据,并利用它,而不是在html元素中传输数据。例如,使用而不是使用单独的
span
元素来包含您的id


另一个选项是使用它来完成大部分客户端工作,只需从php脚本返回JSON格式的原始数据。

在php代码中,更改以下内容:

<div class="show" align="left">
      <span class="returnName"><?php echo $row["firstName"].' '.$row["middleName"].' '.$row["lastName"]; ?></span>
      <span class="returnID" style="display:none"><?php echo $row['idPerson'];?></span> 
</div>

您正在尝试重新发明轮子…问题似乎出在
(“#结果”)。在(“单击”
方法…检查:)我已经研究过了。但我似乎真的无法修复它…只是为了测试;您可以用以下代码替换您的方法:
jQuery(#result”).on(“click”、“.returnName”函数(e){$name=$(this.html();$('#resID').val($name);})尝试了您的代码,它返回实际的div代码…:(所以它返回的是点击span的html,对吗?。记住这是为了测试是否返回点击span的html…哇!!!!是的,.SHOW包含数据。我认为不可能在…jQuery(#result)中包含“.SHOW”)。on(“点击”、“.SHOW”,函数(e)。非常感谢。它解决了我的问题。谢谢!!!它奏效了!!!!!这是一种不同于其他答案(也奏效)的方法,但它奏效了。哇!!!非常感谢!!!谢谢你!哈克曼!!!!
jQuery("#result").on("click", ".show", function(e){
var showName = $('.returnName',this).text();
var showId = $('.returnID',this).text();
$('#search_keyword_id').val(showName);
$('#resID').val(showId);
jQuery("#result").on("click", ".show", function(e){
    var showName = $('.returnName',this).text();
    var showId = $('.returnID',this).text();
    $('#search_keyword_id').val(showName);
    $('#resID').val(showId);
});
<div class="show" align="left">
      <span class="returnName"><?php echo $row["firstName"].' '.$row["middleName"].' '.$row["lastName"]; ?></span>
      <span class="returnID" style="display:none"><?php echo $row['idPerson'];?></span> 
</div>
<div class="show" align="left">
    <span class="returnName" data-id="<?php echo $row['idPerson'];?>"><?php echo $row["firstName"].' '.$row["middleName"].' '.$row["lastName"]; ?></span>
</div>
jQuery("#result").on("click","'.returnName" function(e)
{
     var choosenName = $(this).html();    
     var choosenId = $(this).data('id');
     $('#search_keyword_id').val(choosenName );
     $('#resID').val(choosenId );
});