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

Javascript 如何在Laravel中路由到JSON文件?,javascript,json,ajax,laravel,Javascript,Json,Ajax,Laravel,我想知道如何在我的Laravel项目中创建到JSON文件的路由。我试图做的是从JSON文件中获取数据,但是我不确定如何创建一个这样做的路由。这是我的密码: function ajax_get_json(){ var results = document.getElementById("results"); var hr = new XMLHttpRequest(); var url = "/products/products.json"; hr.open("GET

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

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文件的路由。以下是我目前的情况:

控制器

public function getJSON() {

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

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

但这是行不通的。我怀疑
/products/products.json
url
不可能正确,但考虑到Laravel正在寻找php文件,我不知道还能如何实现这一点。如何通过创建正确的路由类型或访问正确的url从JSON文件获取数据?

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

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));
以下是文档的链接。


祝你好运。

如果你直接从一个文件发送json,你可以使用来自laravel的文件响应,如果这个文件在你的资源文件夹中,那么你可以使用资源路径帮助器来获取路径

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));
以下是文档的链接。


祝你好运。

只需执行
Route::get('/products/products.json','ProductController@getJSON');
我这样做了,但只是为了检查一下,我试图访问
mysite.dev/products/products.json
,但它找不到视图其他路由是否有效?是的。它与如何访问Laravel中的JSON文件有关。Laravel查找php文件,因此我可以编写类似于
products.index
的东西来查找
products
文件夹中的
index.php
文件,但如果我键入
products.products
,它将查找
products.php
而不是
products.json
return response()->json(['productName'=>$productName]);只需执行
Route::get('/products/products.json','ProductController@getJSON')
我这样做了,但只是为了检查一下,我试图访问
mysite.dev/products/products.json
,但它找不到视图。其他路径是否有效?是的。它与如何访问Laravel中的json文件有关。Laravel查找php文件,因此我可以编写类似
products.index
的内容来查找
index.php
文件In
products
文件夹,但如果我键入
products.products
,它将查找
products.php
,而不是
products.json
return response()->json(['productName'=>$productName]);谢谢-我已经这样做了,现在可以在将JSON文件放入我的存储文件夹后查看它,但仍然无法确定满足AJAX请求所需的
url
。让我看看我是否理解您的问题,您在
AJAX\u get\u JSON中创建返回文件的方法的url时遇到问题
method有一个
url
变量,我需要将它设置为文件的位置,但由于某些原因它不起作用。好的,在ajax_get_json函数中,url必须与路由名称匹配,例如,如果路由为route::get(“/products”,”ProductController@getJSON');那么您的路径将是“/products”,您不必放置product.json,除非您有不同的json文件并希望将文件名作为参数传递。我尝试匹配该文件,但得到了不同的错误,
(index):75未捕获引用错误:在XMLHttpRequest.hr.onreadystatechange中未定义return_数据
谢谢-我已经这样做了,现在可以在将JSON文件放入存储文件夹后查看它,但仍然无法找出满足AJAX请求所需的
url
。让我看看我是否理解您的问题,yo您在创建返回文件的方法的url时遇到问题?在
ajax\u get\u json
方法中,有一个
url
变量需要设置为文件的位置,但由于某些原因,它无法工作。好的,在ajax\u get\u json函数中,您的url必须与您的路由名称匹配,例如,如果您的路由是路由::获取('/products','ProductController@getJSON“);那么您的路径将是“/products”,您不必放置product.json,除非您有不同的json文件,并且希望将文件名作为参数传递。我尝试匹配该文件,但得到了不同的错误,
(index):75未捕获引用错误:在XMLHttpRequest.hr.onreadystatechange中未定义返回数据