2011-12-01 33 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