我的Ajax正在为php发送两次帖子

时间:2017-08-03 07:15:32

标签: php jquery ajax post

当我发送我的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 */

我上传了一张图片,一张没有。我试图检查我的帖子是否被发送两次,我试图删除几行,但我似乎无法想出这一个。

谢谢!

2 个答案:

答案 0 :(得分:1)

您最有可能使用buttonsubmit来触发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发送另一个请求。删除其中一个,您只会收到一个预期的请求。