Как отправить данные JSON в GET API?

У меня есть GET API, который получает входные данные в json. когда я тестирую запрос в бессоннице, он работает хорошо, но после тестирования я генерирую код jquery из бессонницы и вставляю его в консоль Chrome. это код:

var data = JSON.stringify({
  "tags": [
    100
  ]
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.info(this.responseText);
  }
});

xhr.open("GET", "http://localhost/panel-api-backend/public/api/foods");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);

когда я получаю ответ, кажется, что ввод (поле tags) не отправляется API. когда я меняю глагол запроса на POST. все ок. есть ли причина, по которой javascript не может отправлять ввод JSON в API?

Почему это помечено jquery?

Andreas 26.02.2019 09:28

не работает и с jquery @Andreas

reza 26.02.2019 09:29
.send( data ) означает, что вы хотите отправить данные в теле запроса. Но большинство серверов не обрабатывают тело запроса в запросах GET, поскольку в спецификации указано, что запросы GET возвращают ресурс, описанный URL-адресом, а тело не имеет значения. Поэтому, если вам нужно отправить данные с запросом, вы не можете использовать GET (вместо этого используйте POST) или вам нужно отправить данные в URL-адресе в виде строки запроса, как показано в одном из ответов ниже.
Shilly 26.02.2019 09:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
270
2

Ответы 2

вы можете отправить данные в запрос GET с помощью QueryString

var tags=[100,200];

$.ajax({
      url:`yoururl?tags=${tags}`,
      type:'GET',
      success:function(response){
        console.info(response);
      },
      error:function(err){

      }
    });

вы также можете отправить так:

var tags=JSON.stringify({"tags":[100,200]});

Я нашел ответ благодаря @Shilly. Запросы GET не имеют тела. поэтому невозможно отправить данные JSON так, как мы отправляем их в запросе POST. Решение простых входных данных json, таких как массив, заключается в том, чтобы поместить в них запрос запроса следующим образом:

http://siteurl.com/api-get?arr[]=value1&arr[]=value2

Другие вопросы по теме