没有反斜杠的Laravel JSON响应

时间:2018-06-23 06:59:43

标签: php json laravel

我正在使用AJAX发布数据到我的控制器。

PHP代码:

return response()->json($request->root() . '/summer-uploads/' . $store);

它返回:

"http:\/\/domain.test\/summer-uploads\/summer-uploads\/PGARvUyeXiAbbTOc90b6HGXXf9ZHmqehOA5f25pE.jpeg"

如您所见,它正在添加反斜杠,某种形式的转义。我如何删除它,所以它看起来像这样:

http://domain.test/summer-uploads/summer-uploads/PGARvUyeXiAbbTOc90b6HGXXf9ZHmqehOA5f25pE.jpeg

4 个答案:

答案 0 :(得分:4)

文档未显示json方法的所有参数。

但是它们隐藏在源代码中。

JsonResponse->__construct():

Base64.DEFAULT

options参数将是json_encode()参数。

例如,漂亮的印刷品和未转义的斜杠:

/**
 * Constructor.
 *
 * @param  mixed  $data
 * @param  int    $status
 * @param  array  $headers
 * @param  int    $options
 * @return void
 */
 public function __construct($data = null, $status = 200, $headers = [], $options = 0)
 {
     //...
 }

答案 1 :(得分:1)

尝试将其返回到url内

url('all your path concatenations')

就您而言

return response()->json(url('/summer-uploads/' . $store));

答案 2 :(得分:0)

如果您使用的是Eloquent: API Resources,则可能会遇到类似的问题。将json选项应用于您的Response或ResponseCollection的最佳方法是:

public function withResponse($request, $response)
{
    $response->setEncodingOptions(JSON_UNESCAPED_SLASHES);
}

答案 3 :(得分:0)

patriziotomato 的解决方案适用于 Laravel,只需使用它即可。

return response()->json([
            'link'=> 'http://somelink.com/something'
          ])->setEncodingOptions(JSON_UNESCAPED_SLASHES);