function save_task(task_id, task_url) { console.log('Saving task to', task_url); var $form = $('.task form'); var $button = $form.find("button[type='submit']"); var payload = $form.serialize(); $button.attr('disabled', true); if (console) console.log('Sending:', payload); $.post(task_url, payload) .done(function(data) { if (console) console.log('Done saving', data); // Update the task list. // NOTE: this is tightly linked to the HTML of the task list in for_project.jade. $('#task-' + task_id).text($form.find("input[name='name']").val()); }) .fail(function(xhr_or_response_data) { // jQuery sends the response data (if JSON), or an XHR object (if not JSON). if (console) console.log('Failed saving', xhr_or_response_data); $('#task-details').html(xhr_or_response_data.responseText); }) .always(function() { $button.attr('disabled', false); }) ; return false; // prevent synchronous POST to current page. }