2

当复选框更改为更改资源“任务”上的布尔属性“已完成”时,我正在使用 jquery 触发 ajax 请求。我有以下关于 AJAX 部分的代码,但我收到此错误 > bad 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')
      })

任务/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 %> 
4

1 回答 1

2

如果您不想指定数据,请不要指定数据。

    $('#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());
于 2012-05-19T22:28:39.767 回答