动态创建表单并使用Ajax进行提交

时间:2017-09-15 13:01:46

标签: javascript jquery ajax forms

我正在尝试在代码中创建一个表单对象,并使用我页面上输入元素的数据填充它。我知道我可以用ajax提交现有表格,但我不想这样做。我只是希望这个提交从表单中的4个字段中提取信息并仅提交那些。

// Create Upload Object & Get Data
var form = document.createElement('form');
var uploadData = new FormData(form);    
uploadData.append('file[]', $("#pageUpload").files);
uploadData.append('pageItem', $("#pageItem").val());
uploadData.append('pageItem2', $("#pageItem2").val());
uploadData.append('pageItem3', $("#pageItem3").val());

我假设问题与我上面创建上传数据的方式有关,但我还在下面提供了我的ajax提交代码。

// Create A New Ajax Request
$.ajax({
    url: './index.php?path=upload',
    data: uploadData,
    type: 'POST',
    contentType: false, 
    processData: false,
    success: function(result){
        console.log(result);
        processUploads(result.);
    }
});

循环遍历表单数据对象,我可以看到它确实包含我定义的键/值,但结果始终是"没有上传。"提前感谢您对我的代码的任何帮助。

2 个答案:

答案 0 :(得分:0)

好吧,我终于弄清楚了。显然你不能添加整个$ element.files数组,而是需要遍历数组并分别附加每个文件。所以代码是

for(var fileIndex in $("#pageUpload")[0].files){
    uploadData.append('file[]', $("#pageUpload")[0].files[fileIndex]);
}

答案 1 :(得分:0)

据我了解,您希望通过ajax请求将数据发送到服务器。请检查以下代码。

$.ajax({
           type: "POST",
           url: 'path/to/file',
           data: $('#formName').serialize(),
           success: function (data) {
                 console.log(data);
           },
           error: function () {
                  console.log("Failed");
           }
      });