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