Ajax发送get而不是post请求

3

这是一个 HTML 表单

       <form id="create"  enctype="multipart/form-data">
    <input class="form-control" name='header' type="text" placeholder="Header" required> 
    <input type="file" name="upload[]" multiple/>
    <div class="button_wrap">
    <button class="btn btn-success" name="create" type="submit"> Save </button>
    </div>
     </form>

这是一个AJAX查询,我的表单既包含数据又包含一组文件。

    $("form#create").submit(function(e) {
        var formData = new FormData()($(this)[0]);
        $.ajax({
            type: 'POST',
            url: 'create.php',
            data: formData,
            cache: false,
            contentType: false,
            processData: false

        }).done(function(data) {
            var dataParsed = JSON.parse(data);

            if (!dataParsed.success) {
                alert("Done");

            }
            else {
                alert.success("Error");
                $("#create").trigger("reset");                
            }
        });
        e.preventDefault();
    });

所以,为什么我使用GET请求而不是POST?这个请求类型有什么区别呢?
2个回答

1
你的代码中事件阻止在结尾,应该放在开头
$("form#create").submit(function(e) {
    e.preventDefault();//it should be at the beginning
    var formData = new FormData()($(this)[0]);
    $.ajax({
        type: 'POST',
        url: 'create.php',
        data: formData,
        cache: false,
        contentType: false,
        processData: false

    }).done(function(data) {
        var dataParsed = JSON.parse(data);

        if (!dataParsed.success) {
            alert("Done");

        }
        else {
            alert.success("Error");
            $("#create").trigger("reset");                
        }
    });

});

1
仍然使用GET提交表单。 - 2787184

0

由于您正在提交表单,因此需要在表单标签中提供method="post"

<html>
<head>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"/>
</head>
<body>
 <form id="create"  enctype="multipart/form-data" method="post">
    <input class="form-control" name='header' type="text" placeholder="Header" > 
    <input type="file" name="upload[]" multiple/>
    <div class="button_wrap">
    <button class="btn btn-success" name="create" type="submit"> Save </button>
    </div>
     </form>
     <script>
      $("form#create").submit(function(e) {
        var formData = new FormData()($(this)[0]);
        $.ajax({
            type: 'POST',
            url: 'create',
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            dataType: 'multipart/form-data'

        }).done(function(data) {
            var dataParsed = JSON.parse(data);

            if (!dataParsed.success) {
                alert("Done");

            }
            else {
                alert.success("Error");
                $("#create").trigger("reset");                
            }
        });
        e.preventDefault();
    });
     </script>
</body>
</html>

是的,你说得对。但同时在表单标记中提供动作也是必要的。 - Bob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接