奇妙な問題またはバグ。私はjQuery Form Pluginを使用していますが、フォーム上で単一のファイルアップロードを行う1つのフォームを受け入れる場所ならどこでも問題なく動作しますenctype:multipart/form-data
。このフォームでは、2 つの奇妙なことに直面しています…</p>
- サーバーから返された 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);
何が原因でしょうか?どうすればそれを修正できますか?
前もって感謝します。
編集:
私が試したことはありませんが、オブジェクト自体をログに記録するだけでしたが、この場合 (file-input と enctype が設定されている場合のみ)、jsonObject はオブジェクトではなく STRING であることがわかりました。
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 が再び含まれていることを意味し、これで最初の問題は修正されますが、opera のバグはまだ残っています。何か案は?