为什么我的代码执行Bad Request错误的URI [object%20Object]?

时间:2012-05-19 22:19:05

标签: jquery ruby-on-rails ajax coffeescript

当我更改复选框以更改资源'Task'上的布尔属性'completed'时,我正在使用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')
      })

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

1 个答案:

答案 0 :(得分: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());