2013-06-19 7 views
1

Я работаю над Rails и имею проблему с вызовом данных ajax. Он работает, и данные вводятся в db, но функция SUCCESS не работает, так как функция предупреждения в функции успеха не срабатывает.Rails, Ajax, Post Function, JQuery

Далее я хочу добавить комментарий к своему сообщению без обновления всей страницы.

AJAX код выглядит следующим образом:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('form').submit(function() { 
     $.ajax({ 
      url: '/comments/create', 
      type: "POST", 
      dataType: 'json', 
      processData: false, 
      success: function (msg) { 
       alert(msg); 
      }, 
      error: function (xhr, status) { 
       alert(xhr.error); 
      } 
     }); 
    }); 
}); 
</script> 

и код Контроллер:

def create 
    puts 'params', params.inspect 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.new(params[:comment]) 
    respond_to do |format| 
     if @comment.save 
      format.html { redirect_to(@post, :notice => 'Thanks for comment.') } 
      format.json { render json => @post, :msg=>"comment oK" } 
     else 
      format.html { render :action => "new" } 
      format.json { render :xml => @comment.errors, :msg=>"comment oooK", :status => :unprocessable_entity } 
     end 
    end 
end 

Этот код работает отлично, чтобы получить возможность отправлять данные в функцию создания, создающей (сообщения?) Вступление в дБ. Но я хотел бы вернуть данные в функции предупреждения при «успехе», но функция предупреждения в успешном режиме не работает и срабатывает функция предупреждения об ошибке.

+0

Какая ошибка возвращает 'error:'? –

+0

попробуйте ответить, что он работает для меня http://stackoverflow.com/questions/7237720/jquery-post-to-rails –

+0

Привет, я новичок в рельсах, могу ли я узнать, как хранить данные в базе данных с помощью ajax звоните, в каком файле .html.erb я должен написать вызов и что мне нужно определить в маршрутах. Как я уже упоминал, я новичок в рельсах, это мне очень поможет. Я создал ajax-вызов в new.html.erb, но он не работает – user2083041

ответ

2

Try:

$('form').submit(function() 
    { 
    var myForm = $('form').serialize(); 
     $.ajax 
     ({ 
      url:'/comments/create', 
      type:"POST", 
      dataType:'json', 
      data: myForm, 
      processData:false, 
      success: function (msg) 
      { 
      alert(msg); 
      }, 
      error: function (xhr, status) 
      { 
      alert(xhr.error); 
      } 
     }); 
    }); 

Если это не работает, пожалуйста, напишите, что вы отправляете через провод в запросе AJAX. Используйте Chrome Console или Firebug, чтобы проверить и вставить результаты POST.

+0

, это не работает. i m отправляет данные формы в мой запрос ajax, и данные вставляются в db, но функция успеха не выполняется – user1014473