奇妙な問題またはバグ。私はjQuery Form Pluginを使用しています。そして、フォーム上でenctype:multipart/form-data
という単一のファイルアップロードを持つ1つのフォームでどこでも受け入れ可能です。このフォームで私は、サーバーから返されるJSONオブジェクトが空かjQueryフォームプラグイン:enctype:multipart/form-dataとfile-upload - JSONは返されません。
- ... 2つの奇妙なものを直面しています!
- 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を持っており、これが私の最初の問題を修正すること、しかし、オペラ、バグがまだ残っています!何か案は?
さて、まず第一に、あなたに感謝あなたの答えのために。上の小さなスニペットを投稿したドキュメントのjsファイルをご覧ください。そして、しばらくの間、このようなもので遊んで、2つのヘルパー関数objToStringとelementToStringを実装しても、実際にはjsonObjectはオブジェクトではなくSTRINGであるため、これらの関数のどれも解消されていません。私は自分の質問を更新して、私が何を意味するのか見ることができます。私の質問1が解決されるように、私は今それをJSObjectに変換し直しています。しかし、まだオペラのダウンロードが続く!何か案は? – matt
これはおそらくバグでしょう!解決策は、サーバーがJSONではなくHTMLのコンテンツタイプで応答する必要があることです。 htmlではすべてがうまくいきます! – matt