表单数据在页面加载时通过ajax而不是在提交时移动

时间:2014-05-27 17:01:03

标签: ajax forms upload multipartform-data form-data

我确信有些东西我没有在那里读过,但我做的每一次搜索都会出现紫色链接。我的目标是拥有一个使用ajax的表单,以避免页面刷新,并避免在手动页面刷新时提交。我想上传文件并将数据插入数据库表。我实际上把这部分放下了。问题是该操作是在页面加载时启动的。我认为这是因为我的ajax函数使用#multiform).submit,但是如果我将其更改为#submit).submit那么ajax脚本不会将数据发送到upload.php而我最终会得到一个空白数组传递给upload.php。

我可以使用按钮而不是表单提交的输入来单击上传。这一切都没有使用formdata。我需要使用formdata来上传文件。以下脚本确实有效。我只需要在点击提交后工作,而不是在页面加载时自动工作。

正如我正在学习的那样,我认为formObj = $(this)指的是multiform并抓取对象,所以当我更改multiform to submit(this)不再起作用时。有可能我只是需要以某种方式改变那个领域吗?几个星期以来,我一直在努力。我一直在靠近,但仍然不在那里。请帮我。谢谢。

我的表格:

<form name="multiform" id="multiform" action="upload.php" method="POST" enctype="multipart/form-data">
Name: <input type="text" name="dname"  value="Ravi"/> <br/>
Age :<input type="text" name="age"  value="1" /> <br/>
Image :<input type="file" name="photo" /><br/>
<input type="submit" id="submit" value="Ajax File Upload" />
</form>

我的js:

jQuery(document).ready(function($) {
$("#multiform").submit(function(e)
{
var formObj = $(this);
var formURL = formObj.attr("action");
var formData = new FormData($(this)[0]); 

$.ajax({
    url: formURL,
type: 'POST',
    data:  formData,
mimeType:"multipart/form-data",
contentType: false,
    cache: false,
    processData:false,
success: function(data, textStatus, jqXHR)
{ alert(data)

},
 error: function(jqXHR, textStatus, errorThrown) 
 {
 }          
});

e.preventDefault(); //Prevent Default action. 
}); 

$("#multiform").submit(); //Submit the form
});

1 个答案:

答案 0 :(得分:0)

我通过向后看它来解决这个问题。我用谷歌搜索了如何在页面加载时自动提交表单,并发现$(document).submit()在页面加载时提交表单,所以我拿出了$(&#34;#multiform&#34;)。 ();现在它的工作原理。对于可能发现此问题且正在开展类似工作的其他人的补充说明。由于某种原因,具有提交输入类型提交的id会导致名称和年龄变量被忽略。