我无法使用Ajax

时间:2015-09-19 00:05:53

标签: javascript php jquery ajax twitter-bootstrap

我一直在尝试使用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();
        });
    });
});

1 个答案:

答案 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);