2012-05-19 42 views
2

我正在使用jquery觸發ajax請求時,複選框更改爲更改資源「任務」上的布爾屬性「已完成」。我有一個關於AJAX部分下面的代碼,但我得到這個錯誤>壞URI`/項目/ 1 /任務/ [對象%20Object]」爲什麼我的代碼執行錯誤的請求壞URI [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 %> 

回答

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()的對象。當您嘗試將{}轉換爲字符串時,就會發生這種情況。

不相信我?將以下內容複製到您的地址欄並按回車鍵:

javascript:var test = {};window.alert(test.toString()); 
+0

謝謝。這個window.alert說「未定義」。這是爲什麼? – oFca

+0

@oFca:因爲找不到動作,您能向我們展示您生成的HTML嗎? –

+0

但是當我把這個window.alert放在.bind裏面,比說'projects/1/tasks/4',那是我的資源和他們的id。現在怎麼辦? – oFca

相關問題