2013-05-22 41 views
0

我對動作的js響應有問題。我正在使用輪詢和Redis來實施IM。我發現的「問題」在於提交信息。我想用一個按鈕(正常方式)或通過ENTER來完成。當表單使用按鈕提交時,它可以正常工作:創建消息,其他用戶在他的屏幕中看到消息,並且消息通過create.js顯示在我的屏幕上,該消息會將發送到我的屏幕的最後一條消息前置。當我用ENTER鍵提交表單時,一切正常(發送消息,另一個接收它),除了create.js之外,出於某種原因,create.js已加載,但不執行最後一行的操作消息到我的屏幕。我把代碼放在下面,謝謝大家提前;)。AJAX請求不會加載響應動作的js

create.js

$(".conversations").prepend("#{escape_javascript(render partial: 'dashboard/kid_conversations/show_message', locals: { message: @message})}"); 
$("#kid_conversation_message_body").val(""); 

這是JS允許ENTER提交:

setInterval(function(){ 
    $.ajax({ 
     url: "#{dashboard_kid_conversation_conversation_polling_url(current_kid, token: (params[:token] rescue nil))}", 
    })},2000); 

    $('#kid_conversation_message_body').keypress(function(e) { 
    if (e.keyCode == 13 && !e.shiftKey) { 
     e.preventDefault(); 
     $.ajax({ 
     url: "#{dashboard_kid_conversation_messages_url}", 
     type: "POST", 
     data: $(this).serialize() + "&conversation_token=" + "#{params[:token]}", 
     success: $("#kid_conversation_message_body").val(""), 
     dataType: "json" 
     }); 
    } 
    }); 

最後的日誌時ENTER鍵,所以create.js被加載。

Rendered dashboard/kid_conversations/_show_message.html.haml (6.5ms) 
    Rendered dashboard/kid_conversation_messages/create.js.haml (11.4ms) 
Completed 200 OK in 287ms (Views: 270.8ms) 

創建動作:

def create 
    @message     = KidConversationMessage.new(params[:kid_conversation_message]) 
    @message.kid_conversation = @conversation 
    @message.kid    = current_kid 

    @message.save 
    end 

的形式,我用Haml的

.response 
    = form_for [:dashboard, @message] , html: {remote: true}do |f| 
    = hidden_field_tag :conversation_token, :body , :value=> @conversation.token 
    .control-group 
     = f.label :body, _('Reply') 
     = f.text_area :body, :rows => 4 
    = submit_tag _('Send'), :class => 'btn button' 
+0

您可以使用'console.debug(variable-here)'函數沿着這個過程並與我們分享結果嗎? –

回答

0

它看起來對我來說,你的形式提交給dashboard_messages_url,而你的按鍵功能AJAX職位,以dashboard_kid_conversation_messages_url 。檢查你的路線,以確保後者存在。

如果這不起作用,您可能會告訴我們您在網絡瀏覽器的「網絡」選項卡中看到的內容。

0

解決了,這是AJAX數據類型,刪除它的作品,謝謝大家的幫助!