Javascript 如何使用Ajax调用在application.js中正确执行jquery请求

Javascript 如何使用Ajax调用在application.js中正确执行jquery请求,javascript,jquery,ruby-on-rails,ajax,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 4,我正试图通过复选框将表行重新定位到另一个,我希望通过Ajax调用来实现这一点。但事情对我不起作用。我点击后什么也没发生,没有简单的回应。我错过了什么 application.js中的我的Javascript代码 $(document).on('ready page:load', function () { $('.check').on('change', function(){ if ($(this).is(':checked')) { id = $(this).attr

我正试图通过复选框将表行重新定位到另一个
,我希望通过Ajax调用来实现这一点。但事情对我不起作用。我点击后什么也没发生,没有简单的回应。我错过了什么

application.js中的我的Javascript代码

$(document).on('ready page:load', function () {
    $('.check').on('change', function(){
    if ($(this).is(':checked')) {
    id = $(this).attr('data-id');
    user_id = $(this).attr('data-user-id');
    complete = true;
    path = '/users/' + user_id + '/tasks/' + id;
    var jqXHR = $.ajax({
                 method: 'put',
                 dataType: "application/json",
                 url: path,
                 data: { task: {complete: complete, id: id}  }
    });

    jqXHR.done(function(data){
         task = $(this).closest("tr");
         $('.complete-tasks').last().after(task);
    })
  };
})
})
查看文件\u index.html

<h3>Tasks database</h3>

<table>

  <% @tasks.each do |task| %>
    <tr class='tasks' id="task_<%= task.id %>">

    #Some stuff

  <td>
    <input type="checkbox" class='check' data-id="<%= task.id %>" data-user-id="<%= current_user.id %>" data-complete="<%= task.complete %>" >
  </td>

    </tr>

  <% end %>

</table>

<h3>Completed</h3>

<div class="complete-tasks">
</div>
耙路径 不要在ajax回调中使用
$(this)
,如
done
。在您的情况下,它将不再引用复选框,而是引用jqXhr对象

有关详细信息,请参见此问题:

javascript控制台会说什么?有错误吗?另外,请尝试在单击之前和之后检查日志文件,以查看请求是否命中Rails以及是否存在任何错误。您应该避免在完成的回调中使用
$(this)
。看:@mccannf我非常感激。提供一个答案,以便我可以接受。@eirikir控制台中没有任何错误。mccannf提示解决了我的问题。@eirikir和我只是好奇如何检查日志文件?
 def update
    @task = Task.find(params[:id])

      respond_to do |format|
     if @task.update(task_params)
      format.json { head :no_content }
     else
      format.html { render action: 'edit' }
      format.json { head :no_content }
     end
   end
  end


 private

    def task_params
     params.require(:task).permit(:title, :due_date, :priority, :complete)
    end

end