Javascript FormData对象未通过jQuery AJAX调用提交
我使用此脚本从表单中获取所有值,以便为ajax请求做好准备:Javascript FormData对象未通过jQuery AJAX调用提交,javascript,jquery,Javascript,Jquery,我使用此脚本从表单中获取所有值,以便为ajax请求做好准备: function saveDataAjax(){ var fd = new FormData(); var inputs = document.getElementsByTagName('input'); for(i=0;i<inputs.length;i++) { fd.append(inputs[i].name, inputs[i].value); } $.ajax({
function saveDataAjax(){
var fd = new FormData();
var inputs = document.getElementsByTagName('input');
for(i=0;i<inputs.length;i++) {
fd.append(inputs[i].name, inputs[i].value);
}
$.ajax({
url: '/edit.php',
data: fd,
type: 'POST',
dataType: 'html',
success: function(data){
alert(data);
}
});
}
函数saveDataAjax(){
var fd=新FormData();
var inputs=document.getElementsByTagName('input');
对于(i=0;i这可能不是原因,但我只想指出:
i
在这里是全局的。JS中的想法是实现全局减排。应该是var i=…
在AJAX调用中添加以下内容:
processData: false,
contentType: false,
所以它看起来像:
$.ajax({
url: '/edit.php',
data: fd,
type: 'POST',
processData: false, //Add this
contentType: false, //Add this
dataType: 'html',
success: function(data){
alert(data);
}
});
本页帮助您……:)
文件
$(文档).ready(函数()
{
$('#uploadBTN')。在('click',function()上
{
var form=$('form')。get(0);
控制台日志(表格);
var fd=新表格数据(表格);
fd.append('user_id',4);
fd.append('user\u media\u category\u id',1);
//控制台日志(fd);
fd.append(“用户”,“这是一些额外的数据”);
$.ajax({
网址:'http://localhost/yii2/azstudio/project/api/web/v1/user-media/new',
键入:“POST”,
数据:fd,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(数据){
控制台日志(数据);
},
cache:false,
contentType:false,
processData:false
});
});
});
介意为FormData发布代码吗?如果您在那里得到一个未定义的,很可能就是出问题的地方。这使得脚本可以工作,但我试图找出原因(了解它是如何工作的),但没有真正得出结论。如果保留b默认值(true),processData和contentType会做什么?无论如何,非常感谢!我同意,你可以像这个新的formdata(yourform)一样使用formdata构造函数;
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous">
</script>
</head>
<body>
<form method="post" id="fileinfo" enctype="multipart/form-data">
file <input type="file" name="slug"><br>
<input type="button" id="uploadBTN" value="Stash the file!"></input>
</form>
<script type="text/javascript">
$(document).ready(function()
{
$('#uploadBTN').on('click', function()
{
var form = $('form').get(0);
console.log(form);
var fd = new FormData(form);
fd.append('user_id',4);
fd.append('user_media_category_id',1);
//console.log(fd);
fd.append("user_", "This is some extra data");
$.ajax({
url: 'http://localhost/yii2/azstudio/project/api/web/v1/user-media/new',
type: 'POST',
data: fd,
success:function(data){
console.log(data);
},
error:function(data){
console.log(data);
},
cache: false,
contentType: false,
processData: false
});
});
});
</script>
</body>
</html>