我想知道如何在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文件中获取数据?
答案 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
祝你好运。