4

CORS を使用し、Amazon Web Services S3 バケットと連携するように FineUploader を構成しました。

私が直面している問題は、アップロードが成功しても応答コンテンツが返されないことです (ステータス コード 204 ですが、応答コンテンツは空です)。そのため、アップロードが行われたとしても (ファイルがアップロードされたことを確認しました)、エラー イベントがトリガーされます。おそらく、これは応答がないためです。

このケースをどのように処理しますか? 「onError」コールバックでこのエラーをキャッチして、「成功」を手動でトリガーする方法はありますか?

編集:

ここまで掘り進めてきました。エラーは に起因するようhandler.xhr.jsです。

特に、parseResponse(xhr)関数内。

try{
   response = qq.parseJson(xhr.responseText);
}
catch(error) {
   log('Error when attempting to parse xhr response text (' + error + ')', 'error');
   response = {};
}

応答が空であるため、これはエラーをスローするようです。

適切な応答がどうあるべきか誰かが知っていますか? ここに空の応答をチェックする行を追加してから、正しい応答がどうあるべきかを手動でプラグインすることを考えています。

4

1 に答える 1

4

結局、問題はparseResponse()機能にありました。アップロードが成功すると、アップロードが成功した後に JSON 文字列が返されることが期待されます{"success": true}

私の場合、Amazon は 204 ステータス コードで空の応答を返します。204 ステータス コードは、応答が必要ないことを意味します

私の場合、編集で言及されているセクションを次のように変更して、これを修正しました。

try {
            if(xhr.status == 204 && xhr.responseText.length == 0){
                response = qq.parseJson('{"success": true}');
            }
            else{
                response = qq.parseJson(xhr.responseText);
            }
}

うまくいけば、これは将来この問題に遭遇する他の人に役立ちます.

于 2013-04-09T09:30:42.430 に答える