У меня есть 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
.send( data ) означает, что вы хотите отправить данные в теле запроса. Но большинство серверов не обрабатывают тело запроса в запросах GET, поскольку в спецификации указано, что запросы GET возвращают ресурс, описанный URL-адресом, а тело не имеет значения. Поэтому, если вам нужно отправить данные с запросом, вы не можете использовать GET (вместо этого используйте POST) или вам нужно отправить данные в URL-адресе в виде строки запроса, как показано в одном из ответов ниже.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вы можете отправить данные в запрос 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
Почему это помечено
jquery?