我正在使用jQuery form plugin处理通过AJAX提交表单。
在不支持通过AJAX上传文件的旧浏览器上上传文件(而不是使用隐藏的iframe)并返回JSON响应时,recommended将响应包装在textarea中。
现在在我的Laravel服务器端,如果请求不是AJAX,我想返回一个包含在textarea中的JSON响应。通常,要返回JSON响应,我会使用return Response::json($value);
,但这不允许我将我的响应包装在textarea中。
照亮\支持\外墙\响应
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中是否有一种干净的方式来返回包含在textarea中的JSON响应?我知道我可以简单地返回一个包裹在textarea中的json_encode()
ed字符串,但我只是在寻找一种可能更清晰的Laravel风格方法。
干杯
答案 0 :(得分:1)
我建议您为此创建一个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);