mysql - 通过axios post发送数据在mysql中给出空数据。谁能告诉我是什么问题
问题描述
export class AddCategory extends Component {
state = {
categoryForm: {
category: {
elementType: 'input',
elementConfig: {
type: 'text',
placeholder: 'Enter Category'
},
value: '',
validation: {
required: true
},
valid: false,
touched: false
}
}
};
checkValidity(value, rules) {
let isValid = true;
if (!rules) {
return true;
}
if (rules.required) {
isValid = value.trim() !== '' && isValid;
}
return isValid;
}
inputChangedHandeller = (event, controlNameOne) => {
const copyLoginFrom = {
...this.state.categoryForm,
};
const newCopy = {
...copyLoginFrom[controlNameOne]
};
newCopy.value = event.target.value;
newCopy.valid = this.checkValidity(newCopy.value, newCopy.validation);
newCopy.touched = true;
copyLoginFrom[controlNameOne] = newCopy;
let formIsValid = true;
for (let inputIdentifier in copyLoginFrom) {
formIsValid = copyLoginFrom[inputIdentifier].valid && formIsValid;
}
this.setState({
categoryForm: copyLoginFrom,
formIsValid: formIsValid
});
}
dataPost = (event) => {
event.preventDefault();
const formData = {};
for (let addressData in this.state.categoryForm) {
formData[addressData] = this.state.categoryForm[addressData].value;
}
const newAddress = {
newAddressData: formData
}
console.log("Hello......." + newAddress);
const parentId = this.state.parent_id;
const options = {
method: 'POST',
headers: {
Authorization: "Bearer " + localStorage.getItem("token")
},
data: formData,
url: 'http://localhost:8080/admin/category/'
}
axios(options);
}
render() {
const formElementsArray = []; //converting state object to the array I can loop throuh
for (let key in this.state.categoryForm) {
formElementsArray.push({
id: key,
config: this.state.categoryForm[key]
});
}
let form = ( <
form onSubmit = {
this.dataPost
} > {
formElementsArray.map(forElement => ( <
Input key = {
forElement.id
}
elementType = {
forElement.config.elementType
}
elementConfig = {
forElement.config.elementConfig
}
value = {
forElement.config.value
}
invalid = {
!forElement.config.valid
}
shouldValidate = {
forElement.config.validation
}
touched = {
forElement.config.touched
}
elementGet = {
(event) => this.inputChangedHandeller(event, forElement.id)
}
/>
))
}
<
button className = "btn btn-primary"
disabled = {
!this.state.formIsValid
} > Submit < /button> <
/form>
)
return ( <
div >
<
div className = {
styles.Login
} > {
form
} <
/div> <
/div>
)
}
}
我正在尝试使用 axios 发送数据,但我在 mysql 表中得到的输出是 Null。谁能告诉我我的代码有什么问题。我尝试在控制台上打印发送的数据,我得到的输出是 [object Object]我尝试使用 stringify 方法,但它在发布数据时给出了标题错误
解决方案
试试 qs 这是一个查询字符串解析器:
npm install qs
接着 :
import qs from "qs"
// in your body
const options = {
method: 'POST',
headers: {
Authorization: "Bearer " + localStorage.getItem("token"),
'Content-Type': 'application/x-www-form-urlencoded' // need to add content type
},
data: qs.stringify(formData),
url: 'http://localhost:8080/admin/category/'
}
推荐阅读
- flutter - 如何在颤动的容器背景中显示 Lottie 文件
- windows - WinRM 客户端收到 HTTP 服务器错误状态 (500)
- docker - Docker rabbitmq 服务器未连接到浏览器
- c - 递归合并排序 - 从原点按升序对坐标进行排序
- python - XLWT DuplicateWorksheetName 错误,仅适用于 2 个函数中的 1 个
- django - 使用 prefetch_related 过滤没有子对象的父对象
- c++ - Clang 不允许在默认参数之后使用可变参数,gcc 允许
- reactjs - 摩纳哥编辑器 deltaDecorations 更改整个文本的样式,而不仅仅是给定范围
- ssis - 当 Fact 表中的记录发生变化时该怎么办?
- r - 使用 lapply 将 R 中的两个矩阵列表相乘