0

我有一個php/mysql後端和一個引導程序/ jQ前端。還有一個4小時的頭痛。twitter引導問題2.3.2 typeahead無法正常工作

的表單元素看起來是這樣的:

<input id="location_name" name="location_name" data-provide="typeahead" 
    autocomplete="off" type="text" placeholder="Location name" 
    class="input-xlarge" required="yes" value="" /> 

jQuery的是這樣的:

$(document).ready(function(){ 
    $('#location_name').typeahead({ 

     'source': function (query,typeahead) { 
      var id = $("#area_id option:selected").attr('value'); 
      return $.get(
       '/app/event/location_name_typehead.php', 
       { 'location_name': encodeURIComponent(query), 'area_id' : id }, 
       function (data) { return data; } 
      ); 
     }, 
     'items': 4, 
     'minLength': 2 
    }); 
}); 

而且PHP是這樣的:

<?php 
header('Content-type: text/json'); 
$location_name = $_REQUEST['location_name']; 
$area_id  = $_REQUEST['area_id']; 
//print_r($_REQUEST); 

// ... PDO setup ... 

$locations = $location_recs->fetchAll(PDO::FETCH_ASSOC); 

if(count($locations) == 0) { 
    echo '[]'; 
} else { 
    foreach ($locations as $location) { 
     $names[] = $location['location_name']; 
    } 
    echo '[ "'.implode('", "', $names).'" ]'; 
}; 
?> 

我用盡全力'application/json'和'text/json'作爲返回類型,並使用typeahead.process(data)和jQuery j的變體對數據進行兒子解碼以使該死的東西起作用。正在返回的搜索結果,即輸入領域觸發Ajax調用,並且文檔返回看起來是正確的:

[ "Administration Block", "Science Block" ] 

誰能指出,攔着它的區分明顯(我認爲)的語法問題?

+0

您在輸入屬性中錯過了'data-provide =「typeahead」'。那是一回事。我會看看我能否找到更多。 – SSaaM

+0

:-)是的,我已經有過幾次。我把它放回去了,並且修改了頂部的代碼 - 但仍然沒有快樂。 – Dycey

+0

建議的話,***不要建立你自己的JSON!使用PHP的'json_encode'。很簡單:'echo json_encode($ names);'。 –

回答

1

您無法從AJAX調用返回任何內容。它們是異步的,你需要做與回調中的數據相關的任何事情。

此外,typeahead希望source函數返回一個數組或調用作爲第二個參數傳遞的函數。在你的情況下,你不能返回任何東西,因爲它是異步的,所以你需要使用第二個參數。

'source': function (query,typeahead) { 
    var id = $("#area_id option:selected").attr('value'); 

    $.get('/app/event/location_name_typehead.php', { 
     'location_name': encodeURIComponent(query), 
     'area_id': id 
    }, function(data){ 
     typeahead(data); 
    }); 
}, 
+0

嘿嘿。做得好。 (我現在正式太老了,不能做全能...) – Dycey

+0

很高興我能幫忙! :-D –