Изменение кода get для использования протокола post

#javascript #xmlhttprequest

#javascript #xmlhttprequest

Вопрос:

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

 function getRecord(){
   xhr.open("GET", "items.php?id="   Number(new Date), true);
   xhr.onreadystatechange = getData;
   xhr.send(null);
}
  

Ответ №1:

Приведенный ниже код должен работать для вас. Не то чтобы, помимо изменения "GET" на "POST" , вам также нужно будет сделать несколько других вещей — отправить заголовок и параметры отдельно (последняя строка). В настоящее время вы не отправляете никаких параметров (вашу последнюю строку); они кодируются так же, как ваши параметры GET, только без «?» в начале.

 function getRecord() {
    var params = "id="   Number(new Date);
    xhr.open("POST", "items.php", true);

    //Send the proper header information along with the request
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.setRequestHeader("Content-length", params.length);
    xhr.setRequestHeader("Connection", "close");

    xhr.onreadystatechange = getData;
    xhr.send(params);
}
  

Комментарии:

1. @Chris — В таком случае, пожалуйста, отметьте этот ответ как правильный, щелкнув зеленую галочку рядом с ним — таким образом, другие будут знать, что вы уже получили свой ответ, и он не будет отображаться как неотвеченный.

Ответ №2:

Вам нужно было бы создать объект FormData, как указано на https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects#Creating_a_FormData_object_from_scratch

Но это будет работать только в браузерах Gecko 2