В Rails 3 и jQuery необходимо получать данные JSON в ajax: успех - PullRequest
0 голосов
/ 08 июля 2010

Я уверен, что это действительно простой вопрос, и я прошу прощения, если это ...

Я использую Rails 3 и jQuery и пытаюсь связать ajax: success с удаленной отправкой формы. Данные, возвращаемые функцией, будут в формате JSON - и по какой-то причине я не могу получить доступ к данным. Я не понимаю, как это исправить. Вот где я создаю форму:

Search: <%= form_tag(configurations_url(:format => :json), :remote => true, :method => :get) do %>
    <%= text_field_tag :query %><br />
    <%= submit_tag "Search"%>
<% end %>

А потом, внизу, у меня написан этот jQuery для прикрепления функции к хвосту:

jQuery("document").ready(function() {   
    jQuery("div#configuration_search_form form").bind('ajax:success', function(json) {
        select_tag = jQuery("div#configuration_select_form form select")
        select_tag.empty()
        none_found_div = jQuery("div#no_configurations_found")
        select_form_div = jQuery("div#configuration_select_form")
        none_found_div.slideUp();
        select_form_div.slideUp();

        if(json.length > 0) {
            jQuery.each(json, function(index, config) {
                option_tag = "<option value='" + config.configuration.id + "'>" + config.configuration.name + "</option>"
                jQuery(option_tag).appendTo(select_tag)
            })
            select_form_div.slideDown();
        } else {
            none_found_div.slideDown();
        }
    })
}

Итак, возвращаемые данные - это данные json, и они абсолютно верны. На самом деле, если я просто напишу функцию ajax вручную внизу, она будет работать нормально (то есть вместо использования ajax: success, я просто написал jQuery.ajax для реакции на отправку), но я бы предпочел не делать этого. иметь весь дополнительный код, так как форма с удаленным тегом такая аккуратная. Это способ, которым я могу это исправить?

EDIT:

Чтобы уточнить - что происходит, ошибки нет, но даже если результаты возвращаются, требуется транк, чтобы отобразить div "not results found".

1 Ответ

0 голосов
/ 09 июля 2010

Не уверен, но, возможно, проблема в том, что вы ожидаете неверное количество аргументов для вашего ajax: успех обратного вызова. Попробуйте:

jQuery("div#configuration_search_form form").bind("ajax:success", function(json, status, xhr) {
      // Your code here...
    });

Вероятно, сначала поместите предупреждение о json.toSource () и статусе и посмотрите, что вы получите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...