Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   API - запрос - ответ (https://javascript.ru/forum/dom-window/80251-api-zapros-otvet.html)

oslayer 14.05.2020 09:34

Про wordpress всё понятно. тут дело в другом. этот сайт (travelshift) формируется динамически уже в браузере с помощью js.

т.е. вот эти данные, если вы посмотрите их внимательно служат как раз для формирования динамической страницы на стороне клиента с помощью js.(подозреваю что используется vue)

Мне нужно подпихнуть эти данные (они же отдаются в браузер, если ввести строку) в скрипт js который эти данные запрашивает.

что то типа локального подключения json файла. т.е. прямого указания - прочитать все данные из json файла, а возьму я эти данные не из базы wordpress, а введя ссылку в адресной строке и скопировав их в json

oslayer 14.05.2020 09:37

Цитата:

Сообщение от laimas (Сообщение 524229)
Сеть, сделайте запрос по этой ссылке. В нем вы увидите, что клиентский скрипт делает асинхронный запрос к серверу, а ответом его будет json. Забота клиента получив эти данные "расфасовать" их куда следует.

Вот мне и нужно расфасовать эти данные, но без запроса к бд wordpress, просто скопировав готовый ответ

laimas 14.05.2020 09:38

Вам что нужно именно эти данные? Ну так заберите их и поместите у себя на сайте как файл, затем запрашивайте их (для его получения и скриптов то не надо будет, хватит и Apach), декодируйте и делайте с ними чего хотите.

oslayer 14.05.2020 09:48

Да именно, эти данные. которые нужно подпихнуть этому скрипту.

Так вот и проблема в том что не знаю как и где это сделать... ума не хватает :(

Смог найти и понять что вот этот скрипт
https://travelshift.com/wp-content/t...eeb227e4057.js
получает все необходимые данные

Понимаю что в нём нужно заменить запросы к api , на запросы к готовым файлам.

?action=base - только в одном месте в этом файле.

Но как это сделать - не знаю. Там слишком сложная для меня структура :(

laimas 14.05.2020 09:52

Я не понимаю чего надо. Что из этих данных должно получится на клиенте мне не ведомо. Кому что "подпихнуть" я не в курсе, могу только сказать, что это должен быть клиентский сценарий, который точно знает структуру данных, ожидает именно их.

А сами данные, коли они нужны, после запроса по ссылке сохраните как имя_файла.json у себя на сервере, если этого будет достаточно.

oslayer 14.05.2020 09:55

Цитата:

Сообщение от laimas (Сообщение 524236)
Я не понимаю чего надо. Что из этих данных должно получится на клиенте мне не ведомо. Кому что "подпихнуть" я не в курсе, могу только сказать, что это должен быть клиентский сценарий, который точно знает структуру данных, ожидает именно их.

fetchCombinedBase: (E = Object(o.a)(regeneratorRuntime.mark((function t(e) {
                        var r, n, o, c, l, d, h;
                        return regeneratorRuntime.wrap((function (t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return r = e.commit, n = e.rootState, o = "".concat(T, "?action=base"), t.next = 4, f.a.get(o, {
                                        responseType: "json"
                                    });
                                case 4:
                                    c = t.sent, l = c.data, d = [], h = n.ui.bp.mobilePortrait ? 512 : 1024, Object.keys(l).forEach((function (t) {
                                        var e = l[t];
                                        "config" == t ? r("i18n/setContent", {
                                            en: e
                                        }, {
                                            root: !0
                                        }) : "pages" == t || "extrapages" == t ? d = d.concat(e) : "blogposts" == t ? r("setBlogPosts", {
                                            posts: e
                                        }) : "trips" == t ? r("setTrips", {
                                            trips: e,
                                            imageQuality: h
                                        }) : "partners" == t ? r("setPartners", {
                                            partners: e
                                        }) : "social_feed" == t && r("setSocialFeed", {
                                            feed: e
                                        })
                                    })), r("setPages", {
                                        pages: d
                                    });


Вот этот кусок кода, который по моему мнению получает данные. Если это так, то здесь нужно заменить на получение из файла. Как это сделать я не знаю.

laimas 14.05.2020 10:06

Здесь ?action=base, это GET параметры запроса с ключом action и значением base. Запрос будет производится по указанному пути, если судить по примеру, то .../api/ и если нет перенаправления, то в каталоге должен быть индексный файл, который и будет обрабатывать этот запрос - ключ и его значение. В CMS же все сложнее. В данном скрипте адрес запроса формируется тут - o = "".concat(T, "?action=base"). Вы можете вместо этого переменной "o" указать любой свой путь (относительный или полный) просто к файлу хранящему эти данные.

oslayer 14.05.2020 10:16

Цитата:

Сообщение от laimas (Сообщение 524238)
Здесь ?action=base, это GET параметры запроса с ключом action и значением base. Запрос будет производится по указанному пути, если судить по примеру, то .../api/ и если нет перенаправления, то в каталоге должен быть индексный файл, который и будет обрабатывать этот запрос - ключ и его значение. В CMS же все сложнее. В данном скрипте адрес запроса формируется тут - o = "".concat(T, "?action=base"). Вы можете вместо этого переменной "o" указать любой свой путь (относительный или полный) просто к файлу хранящему эти данные.

Что то типа
o = "".concat(T, "/mydata.json")
так?

laimas 14.05.2020 10:20

Метод concat() объединяет текст из двух или более строк и возвращает строку из этих строк. То есть, если переменная T содержит путь к реальному каталогу на вашем сайте, то да, нужно только в этом каталоге сохранить эти данные под указанным именем.

oslayer 14.05.2020 10:32

буду пробовать


Часовой пояс GMT +3, время: 05:01.