如何在Laravel中路由到JSON文件?

时间:2018-07-03 17:37:13

标签: javascript json ajax laravel

我想知道如何在Laravel项目中创建到JSON文件的路由。我想做的是从JSON文件中获取GET数据,但是不确定如何创建一个这样做的路由。这是我的代码:

function ajax_get_json(){
    var results = document.getElementById("results");
    var hr = new XMLHttpRequest();
    var url = "/products/products.json";
    hr.open("GET", url, true);
    hr.setRequestHeader("Content-type", "application/json", true);
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
            var data = JSON.parse(hr.responseText);
            document.getElementById("results").innerHTML = return_data;
            results.innerHTML = data.productName;
        }
    }
    hr.send(null);
    results.innerHTML = "requesting data....";
}

尝试此操作时,出现404错误,并且不确定如何创建到JSON文件的路由。这是我到目前为止的内容:

Controller

public function getJSON() {

    return view('products.products.json');
}

Routes

Route::get('/products', 'ProductController@getJSON');

但这不起作用。我怀疑url的{​​{1}}是不正确的,但考虑到Laravel正在寻找php文件,我不知道该怎么做。如何通过创建正确的路由类型或访问正确的URL从JSON文件中获取数据?

1 个答案:

答案 0 :(得分:2)

如果您是直接从文件发送json,则可以使用laravel的文件响应,例如,如果该文件位于资源文件夹中,则可以使用resource_path帮助器获取路径

return response()->file(resource_path('assets/js/data/filename'));

请记住用JSON文件名替换文件名。

您还可以传递这样的标题

return response()->file($pathToFile, $headers);

如果您需要对json内容进行处理,则还可以从文件中解码json

$file = file_get_contents(resource_path('assets/js/data/file.json'));
$jsonData = json_decode($file, true));

这里是文档的链接。 https://laravel.com/docs/5.6/helpers#method-resource-path https://laravel.com/docs/5.6/responses#file-responses

祝你好运。