Ajax post / gets (формы / ссылки) отправляется несколько раз во вкладках jQuery UI - PullRequest
1 голос
/ 23 марта 2011

Я реализовал вкладки jQuery UI в приложении Rails, и я получаю сообщение об ошибке: Когда я отправляю ajax-форму или ссылку, она отправляется несколько раз. Как видно из этого вывода консоли Doom:

УДАЛИТЬ http://localhost:3000/innmeldings/101 404 (не найдено)
УДАЛИТЬ http://localhost:3000/innmeldings/101 404 (не найдено)

Чем больше раз я переключаюсь между вкладками, тем больше раз Ajax ссылка отправляет. Я гуглил это, но не нашел ничего, что делает Я считаю, что это не распространенная ошибка во вкладках пользовательского интерфейса JQuery. Есть идеи, что я делаю не так?

Я использую рельсы 3.05. Я пробовал разные версии jQuery или jQuery Ui:

class InnmeldingsController < ApplicationController 
  respond_to :js, :html 

  def destroy 
    @innmelding = Innmelding.find(params[:id]) 
    @innmelding.destroy 
    @innmeldings = Innmelding.all 
    respond_with( @innmeldings, :layout => !request.xhr? ) 
  end 

  def list 
    @innmeldings = Innmelding.all 
    respond_to do |format| 
      format.html # index.html.erb 
      format.xml  { render :xml => @innmeldings } 
      format.js 
    end 
  end 

list.html.erb:

<td><%= link_to 'Destroy', innmelding, :remote => true, :id => "reload", :method => :delete %></td> 

application.js:

$(document).ready(function(){ 
  $( "#nav" ).tabs(); 
});

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

Нашли решение (спасибо Уильяму, который вывел меня на трассу). По умолчанию Rails загружает файлы js с помощью вызовов ajax. Решение: Скрытие js-файлов в application.html.erb от других необходимых контроллеров.

В моем контроллере просто:

  def index
    @vis_js = 1
  end

и application.html.erb:

  <% if defined?(@vis_js)%>
    <%= javascript_include_tag 'event_calendar', :cache => true %>
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js", "jquery.validate.js", "jquery.ui.datepicker-no", :cache => true %>
    <%= javascript_include_tag 'rails', :cache => true %>
    <%= javascript_include_tag 'application', :cache => true %>
  <% end %>
2 голосов
/ 24 марта 2011

Вы должны проверить, что вы не связываете события (например, клики) несколько раз.Это происходит, когда вы загружаете одни и те же файлы JavaScript несколько раз при загрузке содержимого вкладки через AJAX без кэширования содержимого (т. Е. С параметром cache: false, который используется по умолчанию).

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