我刚刚花了几分钟调试why new FormData($("#ImageEditorForm"));不起作用。在转向 Stack Overflow 后,我在另一个线程中找到了一个建议来代替new FormData($("#ImageEditorForm")[0]);。
我做出了改变,并没有预料到会发生什么。相反,代码现在可以完美地按预期运行。以前,没有任何内容被提交到服务器。现在,表单数据和文件将按预期显示。
我的问题是为什么需要“[0]”?DOM 中只有一个具有该 ID 的元素。按 ID 选择肯定只返回一个元素吗?这里发生了什么?
我正在使用rn-fetch-blob库将一些图片上传到服务器。但我遇到了不同类型的错误,例如 Content-Type 上没有边界或 FormData 结构本身的错误,例如“NSMutableDictionary 类型无法转换为 NSString”,我感到非常沮丧。
我得到了一个像这样的图像数组:
var images = [
{name 'pic1', data: RNFetchBlob.wrap(imagePathHere), type: 'image/jpeg'},
{name 'pic2', data: RNFetchBlob.wrap(imagePathHere), type: 'image/jpeg'},
{name 'pic3', data: RNFetchBlob.wrap(imagePathHere), type: 'image/jpeg'},
];
Run Code Online (Sandbox Code Playgroud)
然后我创建 FormData,如下所示:
const formData = new FormData();
formData.append('id', userId) // <-- numeric type
formData.append('pictures', images);
Run Code Online (Sandbox Code Playgroud)
我正在执行来自 RNFetchBlob 的发布请求,'Content-Type': 'multipart/form-data'并将 formData 直接传递给它。
关于出了什么问题有什么想法吗?我在某处读到 FormData 只允许字符串或 blob,我应该从数组创建 Blob 吗?我怎样才能做到这一点?
提前致谢。
我使用 Laravel 5.8 和 Vue.js 2,这是我的 .vue 文件:
let data = new FormData();
data.append('name', this.name);
data.append('image',this.image)
data.append('_method', 'PATCH');
axios.patch('/url/' + this.id, data)
.then(({data}) => {
})
.catch((error) => {
});
Run Code Online (Sandbox Code Playgroud)
路线
let data = new FormData();
data.append('name', this.name);
data.append('image',this.image)
data.append('_method', 'PATCH');
axios.patch('/url/' + this.id, data)
.then(({data}) => {
})
.catch((error) => {
});
Run Code Online (Sandbox Code Playgroud)
错误
违反完整性约束:1048 列“名称”不能为空。
但是当我将方法更改为 POST 时,在我的 vue 文件和 web.php 中它都有效,发生了什么?我需要使用两种方法:发布新数据和修补更新。我能做些什么?
我有一个非常基本的项目,在这个项目中,我有一个简单的表单。当我提交此表单时,我将数据放入带有追加方法的表单数据中,之后当我在控制台中记录表单数据时,它是一个空对象,我很想知道为什么会发生这种情况,这是我的代码
import styles from '../styles/Home.module.css'
import {useState} from "react";
export default function Home() {
const [inputs, setInputs] = useState({
name: '',
mobile: ''
});
const changeHandler = (e) => {
setInputs(prev => {
const cloneState = {...prev};
cloneState[e.target.name] = e.target.value;
return cloneState;
});
}
const clickHandler = (e) => {
e.preventDefault();
const formData = new FormData();
formData.append('name', inputs.name);
formData.append('mobile', inputs.mobile);
console.log(formData, 'FD');
}
return (
<div className={styles.container}>
<form>
<input type="text" onChange={changeHandler} name='name'/>
<input type="text" onChange={changeHandler} name='mobile'/>
<button type='submit' onClick={clickHandler}>Submit</button>
</form> …Run Code Online (Sandbox Code Playgroud)我已添加了Shopify文档中描述的基本联系表单.
我的代码:
{% form 'contact' %}
{% if form.posted_successfully? %}
<div class="successForm feedback">
<p>Thanks for contacting us. We'll get back to you as soon as possible.</p>
</div>
{% endif %}
{% if form.errors %}
<div class="errorForm feedback">
<p>Sorry, we were unable to submit your inquiry because it contained {{ form.errors | size | pluralize: 'an error', 'a few errors' }}.<br/>Please correct the following and submit again:</p>
{% for field in form.errors %}
<p><strong>The {{ field | capitalize | …Run Code Online (Sandbox Code Playgroud) 目前,我有两个文件,index.htm和accessdata.php。这是我在index.htm中拥有的:
<html>
<head>
<script>
function postData() {
var xmlhttp=new XMLHttpRequest();
var url = "accessdata.php";
var checkBoxes_formData = new FormData(document.getElementById("checkBoxes"));
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(checkBoxes_formData);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("result").innerHTML=xmlhttp.responseText;
}
}
}
</script>
</head>
<body>
<button type="button" onclick="postData()">POST</button>
<form id=checkBoxes>
<table>
<tr><input type="checkbox" name="opt1" value="blue" checked> Blue</td>
<tr><input type="checkbox" name="opt2" value="yellow"> Yellow</td>
</table>
</form>
<p id="result"></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这就是我在accessdata.php中拥有的内容:
<?php
$opt1=$_POST['opt1'];
echo $opt1;
echo "bla";
?>
Run Code Online (Sandbox Code Playgroud)
从今起
<p id="result"></p>
Run Code Online (Sandbox Code Playgroud)
显示“ bla”,但不显示“ blue”或“ yellow”。
我究竟做错了什么?
正确的HTML代码如下!
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> …Run Code Online (Sandbox Code Playgroud) form-data ×6
javascript ×4
axios ×1
contact-form ×1
form-fields ×1
forms ×1
html ×1
jquery ×1
laravel ×1
next.js ×1
php ×1
react-native ×1
reactjs ×1
shopify ×1
vue.js ×1