--- id: 587d7faf367417b2b2512be9 title: Post Data with the JavaScript XMLHttpRequest Method challengeType: 6 videoUrl: '' localeTitle: Publicar datos con el método XMLHttpRequest de JavaScript --- ## Description
En los ejemplos anteriores, recibió datos de un recurso externo. También puede enviar datos a un recurso externo, siempre que ese recurso sea compatible con las solicitudes de AJAX y conozca la URL. El método XMLHttpRequest de JavaScript también se utiliza para publicar datos en un servidor. Aquí hay un ejemplo:
req = new XMLHttpRequest ();
req.open ("POST", url, true);
req.setRequestHeader ('Content-Type', 'text / plain');
req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200) {
document.getElementsByClassName ('message') [0] .innerHTML = req.responseText;
}
};
req.send (nombre de usuario);
Has visto varios de estos métodos antes. Aquí el método open inicializa la solicitud como un "POST" a la URL dada del recurso externo, y utiliza el true Booleano para hacerlo asíncrono. El método setRequestHeader establece el valor de un encabezado de solicitud HTTP, que contiene información sobre el remitente y la solicitud. Debe llamarse después del método open , pero antes del método de send . Los dos parámetros son el nombre del encabezado y el valor para establecer como el cuerpo de ese encabezado. A continuación, el onreadystatechange escucha de eventos onreadystatechange maneja un cambio en el estado de la solicitud. Un estado readyState de 4 significa que la operación está completa, y un status de 200 significa que fue una solicitud exitosa. El HTML del documento puede ser actualizado. Finalmente, el método de send envía la solicitud con el valor userName , que fue dado por el usuario en el campo de input .
## Instructions
Actualice el código para crear y enviar una solicitud "POST". Luego ingrese su nombre en el cuadro de entrada y haga clic en "Enviar mensaje". Su función AJAX reemplazará "La respuesta del servidor estará aquí". Con la respuesta del servidor. En este caso, es su nombre añadido con "ama a los gatos".
## Tests
```yml tests: - text: Su código debe crear un nuevo XMLHttpRequest . testString: 'assert(code.match(/new\s+?XMLHttpRequest\(\s*?\)/g), "Your code should create a new XMLHttpRequest.");' - text: Su código debe usar el método open para inicializar una solicitud "POST" al servidor. testString: 'assert(code.match(/\.open\(\s*?("|")POST\1\s*?,\s*?url\s*?,\s*?true\s*?\)/g), "Your code should use the open method to initialize a "POST" request to the server.");' - text: Su código debe usar el método setRequestHeader . testString: 'assert(code.match(/\.setRequestHeader\(\s*?("|")Content-Type\1\s*?,\s*?("|")text\/plain\2\s*?\)/g), "Your code should use the setRequestHeader method.");' - text: Su código debe tener un controlador de eventos onreadystatechange configurado en una función. testString: 'assert(code.match(/\.onreadystatechange\s*?=/g), "Your code should have an onreadystatechange event handler set to a function.");' - text: Su código debe obtener el elemento con message clase y cambiar su HTML interno al responseText . testString: 'assert(code.match(/document\.getElementsByClassName\(\s*?("|")message\1\s*?\)\[0\]\.innerHTML\s*?=\s*?.+?\.responseText/g), "Your code should get the element with class message and change its inner HTML to the responseText.");' - text: Su código debe utilizar el método de send . testString: 'assert(code.match(/\.send\(\s*?userName\s*?\)/g), "Your code should use the send method.");' ```
## Challenge Seed
```html

Cat Friends

Reply from Server will be here

```
## Solution
```js // solution required ```