【问题标题】:How to access values of 2d array (returned by php file in jquery autocomplete) in JavaScript Function?如何在 JavaScript 函数中访问二维数组的值(由 jquery 自动完成中的 php 文件返回)?
【发布时间】:2015-07-31 10:17:21
【问题描述】:

我认为这很简单,但我无法解决它。
这是 JQuery:

$( "#tut_search" ).autocomplete({
    minLength: 2,
    source: "PHP_Code/MyAjax.php?page=tut_search_ac"
});

这是将二维数组返回到 JQuery 自动完成的 php 脚本:

$keyward = $_REQUEST['term'];
$query = "SELECT title FROM tutorial WHERE title LIKE '%$keyward%' ORDER BY title";
$rs = mysql_query($query) or die(mysql_error()." in query $query");
if($rs)
{
    while($row = mysql_fetch_array($rs))
    {
        $contents[] = array( "label" => $row['id'], "value" => $row['title'], "detail" => $row['text'] );
    }
}   
echo json_encode($contents);

这是我自己创建的 JavaScript 函数。我想在每个自动完成列表项的 onclick 上调用它:

//This function should be called when autocomplete list item is clicked or selected
function loader(label, value)
{
    //Here I want to perform processing on `label` which is actually an id & returned by php script

    //Here I want to perform processing on `value` which is also returned by php script
}

这是我的两个要求:

  1. 我想在任何时候调用函数loader(label, value) 自动完成列表项被单击或选择。
  2. 我还想在loader(laber, value) 函数中访问labelvalue 的值。
    (labelvalue 是两个不同的值 我在 php 脚本中返回)。

请给我一些解决方案来完成以上两个任务。
提前谢谢你。

【问题讨论】:

  • 不清楚你在问什么。如果loader 应该进行预处理,也许您的意思是使用source 选项的函数?为source 使用字符串值已经为您完成了基本处理;选择后,选择的 label 被丢弃,value 被放置在自动完成中(您可以使用.val() 检索它,就像任何输入值一样)
  • 我想将自己创建的函数绑定到列表项。函数还应该访问和处理 php 脚本远程返回的所有数据。 @blgt 请重新阅读我的问题,我也对其进行了编辑/修改。
  • 绑定函数的第一个任务已经通过使用JQuery的select属性解决了。像这样select:function(event,ui){ loader(); }。现在我只想在我的loader() 函数中访问labelvalue

标签: jquery jquery-ui jquery-autocomplete jquery-ui-autocomplete


【解决方案1】:

使用 jQueryUI Autocomplete 的 select 属性调用您的函数。

// on autocomplete initialization
$( "#tut_search" ).autocomplete({
    minLength: 2,
    source: "PHP_Code/MyAjax.php?page=tut_search_ac",
    select: function(event,ui){}
});

// or after initialization
$( "#tut_search" ).on( "autocompleteselect", function( event, ui ) {} );

您可以从ui.item.labelui.item.value 访问标签和值属性,也就是说我会在函数(event,ui){//here} 中调用您的函数并从那里传入参数

【讨论】:

  • 很好用。但它是 50% 的解决方案。我还想在函数中访问labelvalue。剩下的部分你有解决办法吗?
  • 一切正常,只剩下一个问题。我将 ID 传递给了label 索引(来自 php 脚本),但它也显示了value 的值。此外,我通过了更多索引(在我的问题中为detail)以获取更多信息。但除了labelvalue 之外,所有剩余的索引都显示为NULL 值。你有解决办法吗?
  • 为此,我建议发布另一个问题。这得到了一个完全不同的答案。也许开始here
猜你喜欢
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
相关资源
最近更新 更多