Я пытаюсь настроить тег ввода с помощью функции автозаполнения jquery, но он не работает, когда я ссылаюсь на внешние данные JSON.Однако он отлично работает с локальным JSON-подобным массивом ... Позвольте мне объяснить это в моем коде:
HTML-файл:
<html>
<head>
<meta charset="utf-8">
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="jquery-ui-1.8.5.custom.min.js" type="text/javascript"></script>
<script>
$(function() {
$("#birds").autocomplete({
source: "http://localhost:3000/autocomplete_searches/index.json",
minLength: 3
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="birds">Birds: </label>
<input id="birds" />
</div>
</body>
</html>
autocomplete_searches_controller.rb в моем приложении Rails
class AutocompleteSearchesController < ApplicationController
def index
@tags = Tag.limit(30).name_like(params[:term])
@tags_hash = []
@tags.each do |tag|
@tags_hash << {"label" => tag.label}
end
render :json => @tags_hash
end
end
Одно только это действие JSON работает очень хорошо, например: http://localhost:3000/autocomplete_searches/index?term=psychiatric дает мне:
[{"label":"Psychiatric Hospital"},{"label":"Psychiatric Nurse"},{"label":"Psychiatric Examination"}]
И я вижу, что моя функция jQuery также работает как-то, потому чтокогда я набираю, например, «италия» в моем поле ввода #birds, WEBrick дает мне:
Started GET "/autocomplete_searches/index.json?term=italy" for 127.0.0.1 at 2010-09-27 18:07:07 +0200
Processing by AutocompleteSearchesController#index as JSON
Parameteres: {"term"=>"italy"}
bla bla bla SELECT "tags".* FROM "tags" WHERE (tags.name LIKE '%italy%') LIMIT 30
Но я не вижу никаких эффектов на сайте.И, как я уже сказал, скрипт автозаполнения работает отлично, когда я помещаю данные в том же формате прямо в мой HTML-файл.В этом у меня нет проблем:
<html>
<head>
<meta charset="utf-8">
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="jquery-ui-1.8.5.custom.min.js" type="text/javascript"></script>
<script>
$(function() {
$("#birds").autocomplete({
source: [{"label":"Psychiatric Hospital"},{"label":"Psychiatric Nurse"},{"label":"Psychiatric Examination"}],
minLength: 3
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="birds">Birds: </label>
<input id="birds" />
</div>
</body>
</html>
Так в чем же проблема?Я новичок в JSON, так что, возможно, я делаю что-то не так.