jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 轨道上的Ajax 4大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,允许用户喜欢一个帖子.当有人喜欢这个帖子时,帖子请求有效,但除非我刷新页面,否则视图不会更新.我坚持这个.这是我到目前为止:

使用Javascript

$('.favorite').on('click',function() {
  var $heart = $(this).find('.fa');
  $heart.removeClass('fa-heart-o').addClass('fa-heart');
  // POST request to server to create favorite in db
  $.post('/favorites',{
    favorite: { post_id: $(this).attr('data-id') }
  },function(data) {
    console.log(data);
  });
});

控制器

def create
  post = Post.find_by_id(favorite_params[:post_id])
  if current_user.favorite_posts.include? post
    render json: {},status: :bad_request
  else
    @favorite = current_user.favorites.new(favorite_params)
    if @favorite.save
      render json: @favorite
    else
      render json: { errors: @favorite.errors.full_messages },status: :unprocessable_entity
  end
end

结束

这是观点

<% if current_user.favorite_posts.include? post %>
  <span class="fa fa-heart"> <%= post.favorites.count %></span>
<% else %>
  <span class="fa fa-heart-o"> <%= post.favorites.count %></span>
<% end %>

任何帮助表示赞赏.谢谢.

解决方法

有两种解决方案:

我认为您最大的问题是您没有任何功能可以在成功请求时更改您的视图.上面的两个选项是你必须使它工作,所以我会在这里为你详细说明:

阿贾克斯

Ajax将向您发送请求;你仍然需要管理它的响应&功能

$.post('/favorites',{ favorite: { post_id: $(this).attr('data-id') }},.done( function(data) {
  /* Manipulate your view here */
  $("span.fa").text(data);
  console.log("success");
});

您必须记住,Ajax只是一个异步请求.也就是说,Javascript将像微浏览器一样,代表您向服务器发送数据.

然后它会收到服务器的响应(可能包含你想要的数据)……然后你的工作是使用这些数据来操纵你的视图.

JS

您可以使用的另一种方法涉及Rails UJS系统.也就是说,您可以在触发控制器操作后触发javascript ERB模板.

这样您就可以根据需要操作视图,而无需编辑当前的javascript:

$.post('/favorites',{ favorite: { post_id: $(this).attr('data-id') }}
  .done( function(data) { console.log(data); });


#app/controllers/favourites_controller.rb
class FavouritesController < ApplicationController
   def create
     ...
     respond_to do |format|
        if @favorite.save
          format.js #-> invokes /views/favourites/create.js.erb
          format.json { render json: @favorite }
        else
          format.js
          format.json { render json: { errors: @favorite.errors.full_messages },status: :unprocessable_entity }
  end
end

然后,您就可以使用app / views / favorites / create.js.erb来操纵您的视图:

#app/views/favourites/create.js.erb
$("span.fa").hide();

大佬总结

以上是大佬教程为你收集整理的jquery – 轨道上的Ajax 4全部内容,希望文章能够帮你解决jquery – 轨道上的Ajax 4所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。