2017-04-14 109 views
0

我想上传图像表单提交后使用ajax调用,有一个问题,讨厌我,新的FormData($(this)[0])给我的实际值,但每当我尝试发送它通过阿贾克斯其故障并重新加载页面,所以我不能看到控制台,请纠正我在哪里我错了。

我的JavaScript代码

$("#editImage").submit(function(){ 
var data = new FormData($(this)[0]); 
console.log(data); 
return false; 
$.post("../galImages", data).done(function(response){ 
    console.log(response); 
}); 
return false;}); 

我的HTML代码

<form name="edit-image" id="editImage" action="" method="post" enctype="multipart/form-data"><input type="file" name="change-image" accept="image/*" class="form-control mb-20" value="Upload Image"> 
        <input type="hidden" name="edit-img-id" id="editImageId"><input type="submit" class="btn btn-primary" value="Save Changes" id="submitEditImgForm"></form> 

但文件的数据都是张贴在PHP页面,还有一件事我怎么能一起发送隐藏字段值与formdata对象。我是ajax $.post方法的noobie。如果有人有任何想法,请帮助我。

+1

jQuery'.submit'你应该防止处理表单/数据的默认行为?表单(目标网址)呢? – OldPadawan

+0

@OldPadawan我已经更新了html部分 –

+0

然后,我猜[preventDefault](https://api.jquery.com/event.preventdefault/)会这样做 – OldPadawan

回答

1

当你上传一张图片(我的失误,忘了先!): 重要的部分是那些​​否则将无法

$(function() { 
$('#my_form').on('submit', function (e) { 
    e.preventDefault(); 

    var $form = $(this); 
    var formdata = (window.FormData) ? new FormData($form[0]) : null; 
    var data = (formdata !== null) ? formdata : $form.serialize(); 

    $.ajax({ 
     url: $form.attr('action'), 
     type: $form.attr('method'), 
     contentType: false, // needed for upload 
     processData: false, // needed for upload 
     dataType: 'json', // return 
     data: data, 
     success: function (response) { 
      // response 
     } 
    }); 
    }); 
}); 

此代码是不是我的,发现它,适应它很久以前,不能信任它的原始主人,因为我不记得他/她是谁:/

+0

非常感谢你,它的工作原理,你只需要节省很多时间.. –

+0

UR欢迎。对未来有好的代码,对于'给'我们这部分代码并不会得到好评的伙伴感到遗憾...... – OldPadawan

0

使用preventDefault()这将防止窗体和页面重新加载的默认行为。

$("#editImage").submit(function (e) { 
    e.preventDefault(); 
    var data = new FormData($(this)[0]); 
    console.log(data); 
    return false; 
    $.post("../galImages", data).done(function (response) { 
     console.log(response); 
    }); 
    return false; 
}); 
+0

谢谢@julekgwa,看起来像它的工作,页面停止重新加载,但在console.log,“非法调用”,有一个错误,防止页面发送数据到目标php文件 –

相关问题