Can’t seem to figure it out. Every time I try to submit it gets to buildForm() and errors out with a 415 unsupported media type code. Backend is self made with flask, maybe I need to change something there? Here is my react code.
<code>export default class AddForm extends Component {
constructor(props) {
super(props);
this.state = {
sn: "",
name: "",
qrcode: "",
designator: "",
subdesignator: "",
oil: "",
coolant: "",
department: "",
motor: "",
data: [],
};
this.buildForm = this.buildForm.bind(this);
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
// handleSubmit(event) {
// console.log(event.target);
// }
buildForm() {
const formData = new FormData();
formData.append("Specs[sn]", this.state.sn);
formData.append("Specs[name]", this.state.name);
formData.append("Specs[qrcode]", this.state.qrcode);
formData.append("Specs[designator]", this.state.designator);
formData.append("Specs[subdesignator]", this.state.subdesignator);
formData.append("Specs[oil]", this.state.oil);
formData.append("Specs[coolant]", this.state.coolant);
formData.append("Specs[department]", this.state.department);
return formData;
}
handleChange(event) {
this.setState({
[event.target.name]: event.target.value,
});
}
handleSubmit(event) {
axios({
method: "POST",
url: `http://127.0.0.1:5000/Specs`,
data: this.buildForm(),
}).catch((error) => {
console.log(error);
});
event.preventDefault();
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<div className="Searchbar">
<input
type="text"
name="name"
placeholder="Equipment Name"
value={this.state.name}
onChange={this.handleChange}
/>
<input
type="text"
name="sn"
placeholder="Serial Number"
value={this.state.sn}
onChange={this.handleChange}
/>
<input
type="text"
name="department"
placeholder="Department"
value={this.state.department}
onChange={this.handleChange}
/>
// other inputs
</div>
<button type="submit">save</button>
</form>
</div>
);
}
}
</code>
<code>export default class AddForm extends Component {
constructor(props) {
super(props);
this.state = {
sn: "",
name: "",
qrcode: "",
designator: "",
subdesignator: "",
oil: "",
coolant: "",
department: "",
motor: "",
data: [],
};
this.buildForm = this.buildForm.bind(this);
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
// handleSubmit(event) {
// console.log(event.target);
// }
buildForm() {
const formData = new FormData();
formData.append("Specs[sn]", this.state.sn);
formData.append("Specs[name]", this.state.name);
formData.append("Specs[qrcode]", this.state.qrcode);
formData.append("Specs[designator]", this.state.designator);
formData.append("Specs[subdesignator]", this.state.subdesignator);
formData.append("Specs[oil]", this.state.oil);
formData.append("Specs[coolant]", this.state.coolant);
formData.append("Specs[department]", this.state.department);
return formData;
}
handleChange(event) {
this.setState({
[event.target.name]: event.target.value,
});
}
handleSubmit(event) {
axios({
method: "POST",
url: `http://127.0.0.1:5000/Specs`,
data: this.buildForm(),
}).catch((error) => {
console.log(error);
});
event.preventDefault();
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<div className="Searchbar">
<input
type="text"
name="name"
placeholder="Equipment Name"
value={this.state.name}
onChange={this.handleChange}
/>
<input
type="text"
name="sn"
placeholder="Serial Number"
value={this.state.sn}
onChange={this.handleChange}
/>
<input
type="text"
name="department"
placeholder="Department"
value={this.state.department}
onChange={this.handleChange}
/>
// other inputs
</div>
<button type="submit">save</button>
</form>
</div>
);
}
}
</code>
export default class AddForm extends Component {
constructor(props) {
super(props);
this.state = {
sn: "",
name: "",
qrcode: "",
designator: "",
subdesignator: "",
oil: "",
coolant: "",
department: "",
motor: "",
data: [],
};
this.buildForm = this.buildForm.bind(this);
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
// handleSubmit(event) {
// console.log(event.target);
// }
buildForm() {
const formData = new FormData();
formData.append("Specs[sn]", this.state.sn);
formData.append("Specs[name]", this.state.name);
formData.append("Specs[qrcode]", this.state.qrcode);
formData.append("Specs[designator]", this.state.designator);
formData.append("Specs[subdesignator]", this.state.subdesignator);
formData.append("Specs[oil]", this.state.oil);
formData.append("Specs[coolant]", this.state.coolant);
formData.append("Specs[department]", this.state.department);
return formData;
}
handleChange(event) {
this.setState({
[event.target.name]: event.target.value,
});
}
handleSubmit(event) {
axios({
method: "POST",
url: `http://127.0.0.1:5000/Specs`,
data: this.buildForm(),
}).catch((error) => {
console.log(error);
});
event.preventDefault();
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<div className="Searchbar">
<input
type="text"
name="name"
placeholder="Equipment Name"
value={this.state.name}
onChange={this.handleChange}
/>
<input
type="text"
name="sn"
placeholder="Serial Number"
value={this.state.sn}
onChange={this.handleChange}
/>
<input
type="text"
name="department"
placeholder="Department"
value={this.state.department}
onChange={this.handleChange}
/>
// other inputs
</div>
<button type="submit">save</button>
</form>
</div>
);
}
}
open to nearly anything. I have tried removing the unused state items and it didn’t change anything. I have tried changing the wording in several parts. Postman works just fine to add data, and i can call the data up and see it.
New contributor
user25080898 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1