【发布时间】:2012-02-20 18:36:02
【问题描述】:
奇怪的问题或错误。我正在使用jQuery Form Plugin,它在任何地方都可以正常工作,接受一个表单,我在表单上有一个带有enctype:multipart/form-data 的文件上传。在这个表格中,我面临着两件奇怪的事情……
- 服务器返回的 JSON 对象为空!
- 在 Opera 中,提交按钮甚至会触发文件下载!
但是,只有当我将 enctype:multipart/form-data 和 input type="file" 留在表单中时,才会发生这种情况。没有它,一切正常,JSON 对象返回正确 - 并且在 Opera 中没有下载。
HTML:
<form accept-charset="UTF-8" action="/ajax/profiledetails" id="profileAboutMeForm" method="post" novalidate="novalidate" encoding="multipart/form-data" enctype="multipart/form-data">
...
<p class="rel avatarUpload">
<label class="label" for="profileAvatar">Choose Avatar</label>
<img class="profileAvatar avatar30" src="" alt="user">
<input class="fileUpload br3" id="profileAvatar" name="profile[avatar]" type="file">
</p>
...
</form>
jQuery:
$(formId).ajaxSubmit({
type: "POST",
cache: false,
resetForm: reset,
dataType: "text json",
success: function(jsonObject, status) {
console.log("status + ", jsonObject.status: "+ jsonObject.status + ", jsonObject.data: " + jsonObject.data);
知道是什么原因造成的吗?我该如何解决?
提前致谢。
编辑:
虽然我从未尝试过只记录对象本身,但事实证明,在这种情况下(仅当设置了文件输入和 enctype 时)jsonObject 是一个字符串而不是一个对象。
if (typeof jsonObject == 'string')
console.log('yes, it's a string'); //yes, it's a string
jsonObject = JSON.parse(jsonObject);
console.log(jsonObject);
所以,这意味着我的 javascript 中再次有一个 JSObject,这解决了我的第一个问题,但是歌剧错误仍然存在!有什么想法吗?
【问题讨论】:
标签: javascript jquery forms file-upload jquery-forms-plugin