代码之家  ›  专栏  ›  技术社区  ›  Salil

RJS错误:类型错误:元素为空

  •  2
  • Salil  · 技术社区  · 14 年前

    我在使用Ajax时得到了rjs错误:typeerror:element为空。

    我在视图中使用

    <%= periodically_call_remote(:url=>{:action=>'get_user_list', :id=>'1'},
    :frequency => '5') %>
    

    在控制器中

      render :update do |page|
        page.replace_html  'chat_area', :partial => 'chat_area', :object => [@chats, @user]     if @js_update
      end
    

    在部分聊天区

    <% if !@chats.blank? && !show_div(@chats).blank?%>
        <% show_div_id=show_div(@chats) %>
      <% for chat in @chats %>
          <div class="popup" id="chat_area_<%= chat.id %>"
    style="display:<%= (chat.id == show_div_id)? 'block' : 'none' %>;">
    
            <% form_remote_for(:chat, :url => {:controller=>'chats',
    :action=>'create', :id=>1}, :html=>{:name => "form_#{chat.id}"},
    :complete=>"resetContent('#{chat.id}');") do |f| %>
            <div style="display:none;">
                <%= f.hidden_field :sessionNo, :value=>chat.sessionNo %>
                <%= f.text_area :chatContent,  :id=>
    "chatContent_field_#{chat.id}", :cols=>"100", :rows=>"6",
    :onKeyPress=>"return submitenter(this,event);" %>
              </div>
                <input type="image" src="images/chat/send-hover.png"
    value="Send" onclick="return submit_button('<%= chat.id %>')"/>
            <% end %>
          </div>
    
        </div>
      <% end %>
    
    <% else %>
          <div class="popup" id="chat_area_none" style="display:'block';">
              <input type="image" disabled ="disabled"
    src="images/chat/send.png" style="cursor:default;" value="Send" />
          </div>
    <% end %>
    

    index.html.erb中存在my div

          <table border="0" width="100%" cellspacing="0" cellpadding="0">
            <tbody><tr>
                <td align="left" width="80%" valign="top" style="">
                  <%= text_area :chat, :chatContent,  :id=> "chatContent_field", :cols=>"100", :rows=>"6" %>
                </td>
                <td align="left" width="20%" valign="bottom" style="padding-left:10px;padding-left:10px;x" >
                  <div id="chat_area">
                     <%= render :partial => 'chat_area' %>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
    

    感谢您的帮助。

    当做,

    萨利尔盖克瓦德

    2 回复  |  直到 14 年前
        1
  •  4
  •   Salil    14 年前

    我发现这是为什么会发生,因为我没有正确关闭“聊天区”上方的DIV。 我做的唯一一件事就是失去了DIV,它像魔法一样工作, 感谢大家的新年

    重新接地,

    萨利尔盖克瓦德

        2
  •  1
  •   JP Silvashy Gautam Rege    14 年前

    这意味着RJS正试图在HTML输出中操纵不存在的东西。

    问题似乎是您要更新 user_list 但是HTML中不存在具有该ID的内容。确保您正在渲染,同时确保 update 你的属性 periodically_call_remote 方法设置为要更新的元素的ID。

    periodically_call_remote(:url => { :action => 'get_user_list' }, :update => 'get_user_list')
    
    推荐文章