У меня был рабочий код, в котором был вызван вызов AJAX, который не требует возвращаемого значения.rails/jquery/ajax: done callback не исполняется
Javascript (на самом деле CoffeeScript):
$.ajax({
url: "/images/" + image_id + "/" + action,
type: "GET",
dataType: 'json'
}).done((response) ->
alert("hello")
)
На стороне сервера у меня было так:
respond_to do |format|
format.js {render nothing: true}
end
Это работает нормально
Но теперь мне нужно возвращать значение, поэтому я изменилась сторона сервера на это:
respond_to do |format|
format.json {render :json => @image.quality}
end
Это также отлично, без ошибок на стороне сервера или на стороне клиента, но «завершенный» обратный вызов никогда не выполняется.
Что мне не хватает? Я искал много документов, и я смущен тем, что нашел. Официальные документы http://www.railscook.com/recipes/rails-view-controller-ajax-response-example/ говорят, что для рендеринга js с шаблоном, но мне не нужно отображать javascript напрямую, мне просто нужно значение на стороне клиента.
Если вы проверяете ответ с помощью инструментов разработчика браузера, вы видите какой-либо ответ с ожидаемым json? Как насчет каких-либо ошибок JavaScript в окне консоли? – Alireza
На самом деле я вижу ответ json, когда смотрю на firebug в разделе консоли и на вкладке ответа! Таким образом, кажется, что ответ приходит - но тогда почему не «сделал» огонь? Должен ли я использовать другой обратный вызов? – faboolous
Мне нравится функция '$ .get', она короткая и всегда работает для меня, попробуйте:' $ .get (url, function (response) {alert ("got it!");}); '- вы просто необходимо установить переменную 'url', прежде чем вызывать ее – Alireza