使用AJAX以HTML格式提交多个文本字段和文件

时间:2014-07-17 20:18:36

标签: java javascript jquery html ajax

我是AJAX / JQuery的新手,我想知道是否有办法通过AJAX请求从包含文本文件的HTML表单和2个单独的文本框发送数据。我已经能够从文本框中发送数据,但不会发送文件。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
    // this is the id of the form
    $("#SQLsubmit").submit(function() {

        var url = "DAOserv"; // the script where you handle the form input.

        $.ajax({
            type : "POST",
            url : url,
            data : $("#SQLsubmit").serialize(), // serializes the form's elements.
            success : function(data) {
                alert(data); // show response from the php script.
            }
        });

        return false; // avoid to execute the actual submit of the form.
    });
</script>

这是我的AJAX电话^

<div class="row">
<form id="SQLsubmit" name="SQLsubmit">

    <div class="form-group col-lg-4">
        <textarea rows="11" id="BAU" name="BAU" class="form-control"
            placeholder="BAU Reason" form="SQLsubmit"></textarea>
        <input type="file" name="file" /> <input type="submit"
            class="btn btn-primary" value="Submit">
    </div>

    <div class="form-group col-lg-8">
        <textarea rows="11" id="SQL" name="SQL" class="form-control"
            placeholder="SQL Statements" form="SQLsubmit"></textarea>    
    </div>

</form>

这是HTML。

如果有人能告诉我如何获取这两个文本文件,并将文件存入我的Java Servlet(使用doPOST方法),那么我就能将所有字符串解析为字符串,非常感谢!

谢谢!

编辑:我在原始帖子中运行代码时遇到的问题是文本字段已发送,但文件未被发送。

2 个答案:

答案 0 :(得分:0)

您应该定义enctype: 'multipart/form-data。否则jquery应该知道你发送文件。

此链接可能有所帮助: How can I upload files asynchronously?

答案 1 :(得分:0)

你试过吗

 $("#SQLsubmit").submit(function() {

     var url = "DAOserv"; // the script where you handle the form input.

     $.ajax({
         type : "POST",
         url : url,
         data : new FormData(this),
         success : function(data) {
             alert(data); // show response from the php script.
         }
     });

 return false; // avoid to execute the actual submit of the form.
});