我正在使用jQuery form plugin处理通过 AJAX 提交我的表单。
在不支持通过 AJAX 上传文件的旧浏览器上上传文件(而是使用隐藏的 iframe)并返回 JSON 响应时,它是 recommended将响应包装在文本区域中。
现在,在我的 Laravel 服务器端,如果请求不是 AJAX,我想返回一个包含在文本区域中的 JSON 响应。通常,要返回 JSON 响应,我会使用 return Response::json($value);
但这不允许我将响应包装在文本区域中。
照明\支持\立面\响应
public static function json($data = array(), $status = 200, array $headers = array(), $options = 0)
{
if ($data instanceof ArrayableInterface)
{
$data = $data->toArray();
}
return new JsonResponse($data, $status, $headers, $options);
}
Laravel 中是否有一种干净的方法来返回包含在文本区域中的 JSON 响应?我知道我可以简单地返回一个包含在文本区域中的 json_encode()
ed 字符串,但我只是在寻找一种可能更干净的 Laravel 风格方法。
干杯
最佳答案
我建议您创建一个 Response Macro为此。
Response::macro('myjson', function($data = array(), $status = 200, array $headers = array(), $options = 0){
$response = Response::json($data, $status, $headers, $options);
if(!Request::ajax()){
return Response::make('<textarea>'.$response->getContent().'</textarea>', $status, $headers);
}
return $response;
}
用法:(与Response::json()
完全相同)
return Respones::myjson($value);
关于javascript - Laravel - 将 JSON 响应包装在文本区域中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478201/