2013-05-22 3 views
0

У меня проблема с js-ответом на действие. Я реализую что-то вроде IM с опросом и Redis. «Проблема», которую я нашел, в данный момент, чтобы отправить сообщение. Я хочу сделать это с помощью кнопки (обычным способом) или с помощью 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" 
     }); 
    } 
    }); 

Итоговые журналы, когда клавишу ВВОД, так загружен 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, в то время как ваше нажатие клавиш функции Аякс сообщения в dashboard_kid_conversation_messages_url , Проверьте свои маршруты, чтобы убедиться, что последний существует.

Если это не сработает, вы можете сообщить нам, что вы видите на вкладке «Сеть» вашего веб-сайта.

0

Решенный, это был тип данных AJAX, удаляющий его, спасибо за вашу помощь!

Смежные вопросы