为什么在使用Laravel时出现“ SyntaxError:JSON.parse:”

时间:2019-08-12 09:28:44

标签: arrays json laravel laravel-collection

我想查询一些表并以JSON输出形式返回到我的移动应用程序。

public function index(){
    $data['filters'] = Filters::orderBy('id','asc')->where('ftype', 'r')->get();

    $data['categories'] = Category::where('status','=','A')
    ->where('parent_id',0)
    ->orderBy('name')
    ->get();

    $data['requests'] = URequest::with('user.profile')
        ->whereIn ('requests.status', ['A','B'])
        ->orderBy('requests.created_at','desc')
        ->get();

    $data['today'] = new Carbon(date("Y-m-d"));

    return response()->json([
        'success' => true,
        'data' => $data
    ]);
}

当我在Postman上运行以上代码时,出现此错误:

  

SyntaxError:JSON.parse:JSON数据的第1行265962列的JSON数据后出现意外的非空白字符。

如果我检查原始数据,那么它会显示数据,还会显示一些HTML错误,例如 “

哇,看起来好像出了点问题。

”。

此代码应该可以工作,但是要变通,我也尝试过:$data = array(),但它也不起作用。

有人可以告诉我我在这里想念的东西吗?

1 个答案:

答案 0 :(得分:0)

下面是我从为避免jwt身份验证而添加的index.php中删除的代码部分。

header("Access-Control-Allow-Origin: *");

header("Access-Control-Allow-Headers: cache-control, content-type, Content-Type, Accept, Authorization, authorization");

header("Access-Control-Allow-Methods: GET,PUT,POST,DELETE,OPTIONS,FILES");

此代码段导致了此错误:

  

“无法修改标头信息-已发送的标头(从/var/www/xx/public/live/vendor/symfony/http-foundation/Response.php:1286开始的输出)”

因此将多余的html抛出到浏览器中: