我一直在尝试使用ajax和bootstrap(模态)添加新产品,当我按下save changes
按钮时,我会在所有字段中获得Undefined index
。
这是我的ajax代码:
$('#save').click(function(){
var nombre = $('#nombre').val();
var desc = $('#desc').val();
var precio = $('#precio').val();
var stock = $('#stock').val();
var tipo = $('#tipo').val();
var data = new FormData();
jQuery.each(jQuery('#imagen')[0].files, function(i, file) {
data.append('file-'+i, file);
});
var datas="nombre="+nombre+"&desc="+desc+"&precio="+precio+"&stock="+stock+"&tipo="+tipo;
$.ajax({
url: "php/newproduct.php",
data: {datas, data},
cache: false,
contentType: false,
processData: false,
type: "POST"
}).done(function( data ) {
$('#info').html(data);
viewdata();
setTimeout(function() {
$('#myModal').modal('hide');
}, 500);
$('.modal').on('hidden.bs.modal', function(){
$(this).find('form')[0].reset();
});
});
});
答案 0 :(得分:0)
data: {datas, data},
似乎不是正确的javascript语法,我不认为你可以混合不同的数据对象。
您无法将FormData
与网址编码的字符串混合在一起,在您的情况下,如果任何值包含&
,您的问题就不会被正确编码。
如果您使用FormData
form
对象,使用AJAX上传的最简单方法就是
var data = new FormData($("#form").get(0));
然后才使用
data: data,
在你的AJAX电话中
如果您确实需要手动添加字段,则需要将它们添加到FormData
对象
data.append("nombre", nombre);
data.append("desc ", desc);
data.append("precio ", precio);
data.append("stock ", stock);
data.append("tipo ", tipo);