On Sun, May 31, 2020 at 12:34 AM Craig Russell <apache....@gmail.com> wrote: > > So I have now added some data to the "rescind emeritus request" button [1]. > This data is the file name from the emeritus_request, and it is also now data > available to the submit function. (If there is a better way to do this, > please let me know.) > > The data is read in the submit function [2]. But it doesn't work. What is the > right way to send additional data fields in the POST request? I have verified > via the console log that the data (emeritus_file_name) is proper, but I get > an exception trying to put it into the formData. > TypeError: undefined is not an object (evaluating 'formData.push') line 371
Move line 371 after what is line 374 in the code below. > What I'm trying to do is to have the file name available to the > memstat.json.rb file that handles the POST request. Is the entire committer > transmitted on the POST, or just the few changed fields? > > Thanks, > Craig - Sam Ruby > [1] if (owner) > if committer.member.status.include? 'Active' > emeritus_file_name = committer.forms['emeritus_request'] > if committer.forms['emeritus_request'] > console.log('owner emeritus file is: ' + > committer.forms['emeritus_request']) > _button.btn.btn_primary 'rescind emeritus request', > data_emeritus_file_name:emeritus_file_name, > name: 'action', value: 'rescind_emeritus' > else > _button.btn.btn_primary 'request emeritus status', > name: 'action', value: 'request_emeritus' > end > elsif committer.member.status.include? 'Emeritus' > _button.btn.btn_primary 'request reinstatement', > name: 'action', value: 'request_reinstatement' > end > > [2] # submit form using AJAX > def submit(event) > event.preventDefault() > form = jQuery(event.currentTarget).closest('form') > target = event.target > > # if (cancel) button is pressed, don't submit but remove @edit form > cancel_submit = target.getAttribute('data-cancel-submit') > > if cancel_submit > # remove the edit buttons and return > @edit = nil > return > end > > # if additional data, add it to formData > emeritus_file_name = target.getAttribute('data-emeritus-file-name') > console.log('submit emeritus_file_name: ' + emeritus_file_name) > if emeritus_file_name > 371: formData.push name: 'emeritusfilename', value: emeritus_file_name > end > # serialize form > formData = form.serializeArray(); > > # add button if it has a value > if target and target.getAttribute('name') and target.getAttribute('value') > formData.push name: target.getAttribute('name'), > value: target.getAttribute('value') > end > > > Craig L Russell > c...@apache.org >