LINUX.ORG.RU

История изменений

Исправление javascript, (текущая версия) :

а их библиотека почему работает?

Их библиотека (плагин для jQuery) не посылает ajax запросы. Она использует jsonp-запросы.

JSONP - это когда ты в get запросе передаешь дополнительный параметр callback, с названием функции определенной на твоем сайте. А их сервер отдает в ответ не голый json, а javascript-код - json завернутый в вызов этой функции.

То есть ответ будет не {"data":123} а fn({data: 123})

Можешь посмотреть - на свой же запрос, если откроешь по ссылке https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=yourSuperFunction

Ну и в итоге, ты просто посылаешь такие запросы не фетчем, а динамическим встраиванием <script> в свою страницу.

let src = 'https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=cb'

function cb(data){
   console.dir(data)
}

document.body.append(
    Object.assign(
       document.createElement('script'), { src }
    )
)

Исправление javascript, :

а их библиотека почему работает?

Их библиотека (плагин для jQuery) не посылает ajax запросы. Она использует jsonp-запросы.

JSONP - это когда ты в get запросе передаешь дополнительный параметр callback, с названием функции определенной на твоем сайте. А их сервер отдает в ответ не голый json, а javascript-код - json завернутый в вызов этой функции. То есть ответ будет не {"data":123} а fn({data: 123})

Можешь посмотреть - на свой же запрос, если откроешь по ссылке https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=yourSuperFunction

Ну и в итоге, ты просто посылаешь такие запросы не фетчем, а динамическим встраиванием <script> в свою страницу.

let src = 'https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=cb'

function cb(data){
   console.dir(data)
}

document.body.append(
    Object.assign(
       document.createElement('script'), { src }
    )
)

Исправление javascript, :

а их библиотека почему работает?

Их библиотека (плагин для jQuery) не посылает ajax запросы. Она использует jsonp-запросы.

JSONP - это когда ты в get запросе передаешь дополнительный параметр callback, с названием функции определенной на твоем сайте. А их сервер отдает в ответ не голый json, а javascript-код - json завернутый в вызов этой функции. То есть ответ будет не {"data":123} а fn({data: 123})

Можешь посмотреть - на свой же запрос, если откроешь по ссылке https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=yourSuperFunction

Ну и в итоге, ты просто посылаешь такие запросы не фетчем, а динамическим встраиванием <script> в свою страницу.

let src = 'https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=cb'

function cb(data){
   console.dir(data)
}

document.body.append(
    Object.assign(
       document.createElement('script'), { src }
    )
)

Исправление javascript, :

а их библиотека почему работает?

Их библиотека (плагин для jQuery) не посылает ajax запросы. Она использует jsonp-запросы.

JSONP - это когда ты в get запросе передаешь дополнительный параметр callback, с названием функции определенной на твоем сайте. А их сервер отдает в ответ не голый json, а javascript-код - json завернутый в вызов этой функции. То есть ответ будет не {«data»:123} а fn({data: 123})

Можешь посмотреть - на свой же запрос, если откроешь по ссылке https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=yourSuperFunction

Ну и в итоге, ты просто посылаешь такие запросы не фетчем, а динамическим встраиванием <script> в свою страницу.

let src = 'https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=cb'

function cb(data){
   console.dir(data)
}

document.body.append(
    Object.assign(
       document.createElement('script'), { src }
    )
)

Исправление javascript, :

а их библиотека почему работает?

Их библиотека (плагин для jQuery) не посылает ajax запросы. Она использует jsonp-запросы.

JSONP - это когда ты в get запросе передаешь дополнительный параметр callback, с названием функции определенной на твоем сайте. А их сервер отдает в ответ не голый json, а javascript-код - json завернутый в вызов этой функции. То есть ответ будет не {«data»:123} а fn({data: 123})

Можешь посмотреть - на свой же запрос, если откроешь по ссылке https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=yourSuperFunction

Ну и в итоге, ты просто посылаешь такие запросы не фетчем, а динамическим встраиванием <script> в свою страницу.

let src = 'https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=cb'

function cb(data){
   console.dir(data)
}

document.body.append(
    Object.assign(
       document.createElement('script'), { src }
    )
)```

Исправление javascript, :

а их библиотека почему работает?

Их библиотека (плагин для jQuery) не посылает ajax запросы. Она использует jsonp-запросы.

JSONP - это когда ты в get запросе передаешь дополнительный параметр callback, с названием функции определенной на твоем сайте. А их сервер отдает в ответ не голый json, а javascript-код - json завернутый в вызов этой функции. То есть ответ будет не {«data»:123} а fn({data: 123})

Можешь посмотреть - на свой же запрос, если откроешь по ссылке https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=yourSuperFunction

Ну и в итоге, ты просто посылаешь такие запросы не фетчем, а динамическим встраиванием в свою страницу.

let src = 'https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=cb'

function cb(data){
   console.dir(data)
}

document.body.append(
    Object.assign(
       document.createElement('script'), { src }
    )
)

Исходная версия javascript, :

а их библиотека почему работает?

Их библиотека (плагин для jQuery) не посылает ajax запросы. Она использует jsonp-запросы.

JSONP - это когда ты в get запросе передаешь дополнительный параметр callback, с названием функции определенной на твоем сайте. А их сервер отдает в ответ не голый json - а javascript-код, завернутый в вызов этой функции. То есть ответ будет не {«data»:123} а fn({data: 123})

Можешь посмотреть - на свой же запрос, если откроешь по ссылке https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=yourSuperFunction

Ну и в итоге, ты просто посылаешь такие запросы не фетчем, а динамическим встраиванием в свою страницу.

let src = 'https://kladr-api.ru/api.php?oneString=true&withParent=true&limit=10&query=%D0%BA%D0%B8%D1%80&_=1633499111351&callback=cb'

function cb(data){
   console.dir(data)
}

document.body.append(
    Object.assign(
       document.createElement('script'), { src }
    )
)