0
我有一个奇怪的问题,任何帮助,将不胜感激。反应:formData在PHP中为空?
其实代码可以写得更好我敢肯定,所以也许我只是在做一些根本上错误的地方,但即使是这样的话我想知道为什么这不起作用。
所以我必须在组件AddHouse这样输入字段的表单:
<form name="myForm" encType="multipart/form-data" onSubmit={this.uploadForm}>
<input type="text" name="city" placeholder={condition ? 'City' : this.props.placeholders.city} {...(condition ? {required:true} : {})}></input><br></br>
<input type="text" name="address" placeholder={condition ? 'Address' : this.props.placeholders.address} {...(condition ? {required:true} : {})}></input><br></br>
这只是形式的一小部分。它有多个类似的字段,当我从主页面上传它时,它会工作,但我也想从我制作的模式发送这个表单,但是当我从模式发送到PHP文件上传到在数据库中,$ _POST数组只包含键。条件是给那些模式的房屋数据作为占位符,并使字段不是必需的,并且这两个条件都有效。
当表单被上传时,这个函数被调用AddHouse组件:
uploadForm(e){
e.preventDefault();
this.setState({loading: true, errorMsg: false, successMsg: false});
var form = document.forms.namedItem("myForm");
var formData = new FormData(form);
this.props.addHouse(formData, function(bool){
if(bool){
form.reset();
this.setState({successMsg: true, errorMsg: false, loading: false, preview: null});
}
else{
this.setState({errorMsg: true, successMsg: false, loading: false});
}
}.bind(this));
}
addHouse在父组件:
addHouse(formData, fn){
var dashboard = this;
var request = new XMLHttpRequest();
var script = this.state.modal ? "php/edit_house.php" : "php/add_house.php";
this.setState({loading: true});
request.open("POST", script, true);
request.onreadystatechange = function(){
if(request.readyState === 4){
if(request.status === 200 && request.responseText == 1){
dashboard.setState({loading: false});
fn(true);
}
else{
console.log(request.responseText);
dashboard.setState({loading: false});
fn(false);
}
}
};
request.send(formData);
谢谢如果你花时间阅读这堵墙..
我从标题中删除了已解决。您可以在答案区域发布自己的答案,也可以删除问题。被接受的答案会自动将其标记为已解决。 –