AJAXを使用してファイルをアップロードするためにJQuery用の "Bootstrap File-input"プラグインを使用しようとしています。プラグインは、次のように「エラー」と呼ばれるJSONのキーに受け取っされているエラーメッセージを見込ん:JSONエラーメッセージをLaravelの "error"オブジェクトとして返します
{error: 'You are not allowed to upload such a file.'}
だから私は、「ハンドラ」クラスの「レンダリング」メソッドで例外処理のための私自身のコードを書いた:
public function render($request, Exception $exception){
$err_code = $this->getExceptionHTTPStatusCode($exception);
$data = [
"error" => "Internal Server error.",
"exception" => $exception->getMessage()
];
if ($exception instanceof ValidationException){
$data['error'] = "Wrong input data";
$data['error_list'] = $exception->getResponse()-> getOriginalContent();
$err_code = 422;
}
if ($request->expectsJson()) {
return response()->json(
$data,
$err_code
);
}
return parent::render($request, $exception);
}
しかし、その代わりに予想されるようにデータが供給するのではなく、「responseText」キー値で、配列の内容を置きます(そしてまた、それは文字列としてエスケープされます):
{"readyState":4,"responseText":"{\"error\":\"Wrong input data\",\"exception\":\"The given data failed to pass validation.\",\"error_list\":{\"logotipo\":[\"Logotipo field is mandatory\"]}}","responseJSON":{"error":"Wrong input data","exception":"The given data failed to pass validation.","error_list":{"logotipo":["Logotipo field is mandatory."]}},"status":422,"statusText":"Unprocessable Entity"}
私は別のものを置くことができる場合、私は思ったんだけどキーと値は "responseText"と同じレベルの "JSONResponse"と同じように(私はどのように動作するのかはわかりませんが、Laravelのバリデータによって追加されているように見えますが)、StringではなくJSONオブジェクトです。私はJQueryで文字列を解析できることを知っていますが、 "Bootstrap File Input"プラグインはJSONとして期待しており、コードを変更することはできません。
また、Vue.jsリソースプラグインを使用しようとしましたが、応答が別の方法で読み込まれるように見えるので、同じ「コンテンツ」を持つ「body」と「bodyText」というオブジェクトがあります。なぜ私はエスケープされた文字列とJSONとして1つ、応答が重複しているのか分かりません。
ありがとうございます。