我正在使用带有rails的jQuery。我正在尝试发出PUT请求来更新任务。呼叫成功。但是,返回的javascript代码不会执行。代码返回正常,但它不会执行。
这是我正在制作的jQuery put请求。
$("#droppable_<%= bin.id -%>").droppable({
drop: function(event, ui) {
div_ids = ui.draggable.attr('id').split('_');
$.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) {
});
}
});
这是rjs代码。
render :update do |page|
page.alert 'success'
page.remove "draggable_#{params[:id]}" if old_bin_id.to_s != params[:task][:bin_id]
page.replace_html "count_#{old_bin_id}", current_user.tasks.bin(old_bin_id).size
page.replace_html "count_#{params[:task][:bin_id]}", current_user.tasks.bin(params[:task][:bin_id]).size
end
这是我完成请求后得到的内容。
try {alert("success");jQuery("#draggable_2").remove();jQuery("#count_2").html("");jQuery("#count_3").html("2");} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('alert(\"success\");\njQuery(\"#draggable_2\").remove();\njQuery(\"#count_2\").html(\"\");\njQuery(\"#count_3\").html(\"2\");'); throw e }
哪个是正确的,但它不会执行。知道为什么吗?
答案 0 :(得分:1)
因为如果你想使用jQuery处理rjs,有两种方法可以做到:
$("#droppable_<%= bin.id -%>").droppable({
drop: function(event, ui) {
div_ids = ui.draggable.attr('id').split('_');
$.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) {
eval(data) #run js ajax returned
});
}
});
或
$("#droppable_<%= bin.id -%>").droppable({
drop: function(event, ui) {
div_ids = ui.draggable.attr('id').split('_');
$.ajax({
url:'/tasks/' + div_ids[div_ids.length - 1],
data: {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'},
dataType: "script",
type: "POST"
});
}
});