Php 拉威尔的JSONP

Php 拉威尔的JSONP,php,javascript,jquery,jsonp,laravel,Php,Javascript,Jquery,Jsonp,Laravel,浏览器向Laravel发送JSONP请求,Laravel将结果返回浏览器。在浏览器控制台中,我收到警告: Resource interpreted as Script but transferred with MIME type text/html: 我相信这是由于JSONP响应中的头不正确造成的?如何修复此警告 PHP $callback = Input::get('callback'); $result = DB::table('users')->find(123); return

浏览器向Laravel发送JSONP请求,Laravel将结果返回浏览器。在浏览器控制台中,我收到警告:

Resource interpreted as Script but transferred with MIME type text/html:
我相信这是由于JSONP响应中的头不正确造成的?如何修复此警告

PHP

$callback = Input::get('callback');
$result = DB::table('users')->find(123);

return $callback . '(' . json_encode($result) . ')';

Response::JSON($result)
将返回通常的JSON响应,我相信它不会返回包含回调函数名的JSONP变量。

您可以在Response::JSON()调用中提供头


JSONP的正确MIME类型是application/javascript。

您可以在Lavavel 4中执行此操作:(原文:Tu puedes hacer esto en Laravel 4)

正如所建议的那样更好,因为您不必操纵$result

另一个选项是echo,而不是使用响应。

对于Laravel(5.1及以上)或Lumen(5.1及以上):

如果要创建JSONP响应,除了setCallback之外,还可以使用JSON方法:

return response()
    ->json(['name' => 'Abigail', 'state' => 'CA'])
    ->setCallback($request->input('callback'));

对于Laravel>8,要创建JSONP响应:

return response()
        ->json(['name' => 'Abigail', 'state' => 'CA'])
        ->withCallback($request->input('callback'));
我们应该使用with callback()而不是setCallback()

据拉威尔说

Response::json($result)->setCallback(Input::get('callback'));
return response()
    ->json(['name' => 'Abigail', 'state' => 'CA'])
    ->setCallback($request->input('callback'));
return response()
        ->json(['name' => 'Abigail', 'state' => 'CA'])
        ->withCallback($request->input('callback'));