I have used Methods for several things based on form inputs and it’s worked nicely, so I decided to use it to generate some files via calling a C process at the end of form submission. It all works great - although it has one strange side effect that I cannot prevent - it causes the entire page to refresh.
Is there anyway to prevent this? I have tried adding a return, using await and placing the call inside of a onLoad of the confirmation page also for async execution via a listener - it doesn’t seem to matter where I call the method from it always causes a full page refresh. The strange thing is the other methods I have for purely database code does not do this. It’s only when I run my method that changes files.
My method is defined only in server directory, alongside my publications. I have read on stack overflow that is one cause - definition on the client. So that can be ruled out.
Is this supposed to be like this? Thanks in advance for any help on this. If I cannot figure it in 24 hours I have a work around it just requires alot of coding that would be nice to avoid.
As always, seeing a sample code will help a lot.
And normally, with forms, it is just a simple: e.preventDefault()
on the submit function
I have been using e.preventDefault()
but in this case it’s on the return of the call.
Form is using:
<AutoForm ref={ref => { fRef = ref; }} onSubmit={data => this.submit(data, fRef)}>
Submit:
submit(data, formRef) {
Meteor.call('create', {
data: this.state
}, (err, res) => {
if (err) {
console.error(err);
} else {
if(res != undefined){
console.log(res);
}
}
});
}
}
The method is in /server/
and works fine - files are generated but causes a full page refresh:
Meteor.methods({
'create'({ data }) {
console.log('Creating file');
CreateFile(data);
return true; /*added a return to test, doesnt do anything - without a return also causes refresh */
}
});
To clarify fully, the page does not do a refresh if you submit the form it’s only if the method is called and on the response from the method (which was successful or an error) it then forces a full page refresh.
1 Like
Any chance that you are triggering the code refresh of Meteor with the new file being created?
1 Like
Ohh of course, if you put a new file in /public it refreshes the entire app in dev mode. Thanks man! I was confused as heck!! Nailed it