当复选框更改为更改资源“任务”上的 bool 属性“完成”时,我使用 jquery 触发 ajax 请求。我有关于 AJAX 部分的以下代码,但出现此错误 > 错误的 URI `/projects/1/tasks/[object%20Object]'
tasks.js.coffee
$('#task_completed').bind 'change', (event) =>
url = $('#task_completed').closest('form').attr('action')
data = {}
data.task = {}
$.post({
url: url
data: data
success: ->
$('.task_headline').toggleClass('completed_task')
})
task/show.html.erb
<%= form_for [@project, @task], :remote => true do |f| %>
<%= f.label :completed %>
<%= f.check_box :completed %> <!-- this automatically has the id="task_completed" -->
<% end %>
最佳答案
如果您不想指定数据,就不要指定数据。
$('#task_completed').bind 'change', (event) =>
url = $('#task_completed').closest('form').attr('action')
$.post({
url: url
success: ->
$('.task_headline').toggleClass('completed_task')
})
此外,您忘记了 url:url 后面的逗号,这可能是必要的。
$('#task_completed').bind 'change', (event) =>
url = $('#task_completed').closest('form').attr('action')
$.post({
url: url,
success: ->
$('.task_headline').toggleClass('completed_task')
})
如果仍然发生这种情况,您需要暂时将该函数替换为:
window.alert($('#task_completed').closest('form').attr('action'))
如果警报中显示[object%20Object]
,则您保存表单的位置出现问题。请注意,[object%20Object]
意味着您正在尝试打印一个未定义显式 toString() 的对象。这正是您尝试将 {}
转换为字符串时发生的情况。
不相信我?将以下内容复制到地址栏并按 Enter:
javascript:var test = {};window.alert(test.toString());
关于jquery - 为什么我的代码执行错误请求错误 URI [object%20Object]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10669241/