Как мне перенаправить файл JSON в Laravel? - PullRequest
0 голосов
/ 03 июля 2018

Мне интересно, как создать маршрут к файлу JSON в моем проекте Laravel. То, что я пытаюсь сделать, это GET данные из файла 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. Вот что у меня есть на данный момент:

Controller

public function getJSON() {

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

Routes

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

Но это не работает. Я подозреваю, что url из /products/products.json не может быть правильным, но я не знаю, как еще я мог бы добиться этого, учитывая, что Laravel ищет php-файлы. Как я могу получить данные из моего файла JSON, создав правильный тип маршрута или получив правильный URL-адрес?

1 Ответ

0 голосов
/ 03 июля 2018

Если вы отправляете 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

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...