当我发送我的create.php以便顺利上传时,我的桌面上有两个帖子。
$(document).ready(function () {
/* Data Insert Starts Here */
$(document).submit('submit', '#SavePost', function () {
$.post("create.php", $(this).serialize())
.done(function (data) {
$("#dis").fadeOut();
$("#dis").fadeIn('slow', function () {
$("#dis").html('<div class="alert alert-info">' + data + '</div>');
$("#SavePost")[0].reset();
$("body").fadeOut('slow', function () {
$("body").fadeOut('slow');
window.location.href = "index.php";
});
});
});
/* Image upload Ajax */
$.ajax({
url: "create.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData: false,
beforeSend: function () {
//$("#preview").fadeOut();
$("#err").fadeOut();
},
success: function (data) {
if (data == 'invalid file') {
// invalid file format.
$("#err").html("Invalid File !").fadeIn();
} else {
// view uploaded file.
$("#preview").html(data).fadeIn();
$("#SavePost")[0].reset();
}
},
error: function (e) {
$("#err").html(e).fadeIn();
}
});
/* Image upload Ajax ENDING */
return false;
});
/* Data Insert Ends Here */
我上传了一张图片,一张没有。我试图检查我的帖子是否被发送两次,我试图删除几行,但我似乎无法想出这一个。
谢谢!
答案 0 :(得分:1)
您最有可能使用button
或submit
来触发ajax事件。
您只需添加e.preventDefault();
尝试这样使用:
$('#myForm').submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: $(this).attr( 'action' ),
data: $(this).serialize(),
success: function( response ) {
console.log( response );
}
});
return false;
});
答案 1 :(得分:0)
$.post
和$.ajax
是两个单独的请求,因此您要发送两个请求,第一个请求通过$.post
方法,然后您使用$.ajax
发送另一个请求。删除其中一个,您只会收到一个预期的请求。