2011-12-01 69 views
1

我已经搜索了与此相关的问题,但其中大多数与jquery ui有关,我没有使用,其余与我的问题无关。使用自动完成功能返回多个值

我正在使用this autocomplete plugin [不是UI],而是通过SQL返回多个值。我想仅显示一个值作为正在工作的自动完成,但当用户单击该建议时我想使用其他两个值 - 它应该使用其他值重定向到另一个页面。

例如:我有数据返回:ABC 001 55。 ABC应显示为列表中的建议值,但是当用户点击ABC,必须在本页面与其他两个值重定向:page/001/55/

这是我有到现在的代码,并同时建议拿出正确[data[0]]我试图使用和data[2]通过其它两个数据,但这将引发一个未定义的错误:

PHP:

foreach ($items as $item) { 

      $value = $item['ABC']; 
      $noID = $item['NoID']; 
      $cID = $item['cID']; 

      echo $value . "\n"; 

     } 

JQUERY:

$('#f').autocomplete('redirect.php', { 
     width: 500, 
     max: 15, 
     highlight: function(match, keywords) { 
     keywords = keywords.split(' ').join('|'); 
     return match.replace(new RegExp("("+keywords+")", "gi"),'<b>$1</b>'); 
     }, 
     formatItem: function(data) { 
      return data[0]; 
     } 
     }).result(function(event, data) { 
      if (data) { 
       //var noID = data[1]; 
       //var cID = data[2]; 
       //location.href = "anotherpage.php?s=" +noID+ "/" +cID; 
       alert(data[0] + data[1] + data[2]); // <- data 1 and 2 are shown as undefined. 
      } 
    }); 
+0

我对PHP很熟悉,但你似乎只输出$ value:'echo $ value。 “\ n”'。 –

+0

即使我回应其他两个值,它仍然会显示“undefined”错误。 – input

+0

查看插件的源代码,数据分隔符是'|',所以你应该有'echo'$ value | $ noID | $ cID \ n“;'(编辑:我不熟悉phph:o )) –

回答

1

您似乎没有在您的php脚本中“回显”所有必需的值。

纵观插件的源代码,解析方法需要这样的:

Data1|Data2|Data3\n 
Data1|Data2|Data3\n 
Data1|Data2|Data3\n 

我不熟悉PHP,但你的脚本输出应该是这样的:

echo "$value|$noID|$cID\n"; 

有关信息,请参见插件的解析方法:

function parse(data) { 
    var parsed = []; 
    var rows = data.split("\n"); 
    for (var i=0; i < rows.length; i++) { 
     var row = $.trim(rows[i]); 
     if (row) { 
      row = row.split("|"); 
      parsed[parsed.length] = { 
       data: row, 
       value: row[0], 
       result: options.formatResult && options.formatResult(row, row[0]) || row[0] 
      }; 
     } 
    } 
    return parsed; 
}; 
+0

非常好。非常感谢你。 – input