奇怪的问题或错误。我正在使用jQuery 表单插件,它在任何地方都可以正常工作,接受一个表单,我在表单上有一个文件上传enctype:multipart/form-data
。在这个表格中,我面临两件奇怪的事情……</p>
- 从服务器返回的 JSON 对象是空的!
- 在 Opera 中,提交按钮甚至会触发文件下载!
但是,只有当我将enctype:multipart/form-data
and留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,这解决了我的第一个问题,但是歌剧错误仍然存在!有任何想法吗?