表单提交的这段代码在Google Chrome中完美运行,而在Firefox中却没有。有人能告诉我我的代码有什么问题吗?
$(document).ready(function(e){
/*sending post data to php script */
$("form[id='postForm']").submit(function(e){
e.preventDefault();
var text = $('#postText').val();
var formData = new FormData($(this)[0]);
formData.append('postText', text );
$.ajax({
url: "home.php?module=facebook&action=post-news&method=script",
type: "POST",
data: formData,
cache: false,
processData: false,
contentType: false,
context: this,
success: function (msg) {
window.location.reload();
}
});
e.preventDefault();
});
$('input:file').on('change', function () {
var formData = new FormData($(this)[0]);
//Append files infos
jQuery.each($(this)[0].files, function(i, file) {
formData.append('imageToPost[' + i + ']', file);
});
});
});
答案 0 :(得分:1)
快速检查控制台:
TypeError: Argument 1 of FormData.constructor does not implement interface HTMLFormElement.
问题在于:
$('input:file').on('change', function () {
var formData = new FormData($(this)[0]); <--- HERE
此不是表单,而是输入元素。不确定你想在这里实现什么,但可能会序列化你的表单。为此你需要做:
var form = $("#postForm")[0];
var formData = new FormData(form);
然后附加你的文件。
希望这有帮助。