Introducción a JavaScript

1

¿Por qué aprender JavaScript?

2

¡Hola Mundo! en Mac

3

¡Hola Mundo! en Windows

4

Anatomía de una variable

5

Tipos de datos en JavaScript

6

Creación de strings

7

Operadores aritméticos

8

Conversión de tipos: Type Casting y Coerción

9

Conversión de tipos explícita e implícita

Estructuras de Control y Lógica

10

Operadores de comparación

11

Operadores lógicos

12

Ejecución condicional: if

13

Ejercicio: Adivina el número

14

Ejecución condicional: switch

15

Loop: for

16

Loop: for of

17

Loop: for in

18

Loop: while

19

Loop: do while

Funciones y This

20

Anatomía de una función

21

Funciones vs Métodos

22

Funciones puras e impuras

23

Arrow function y enlace léxico

24

Contextos de ejecución y scope chain

25

¿Qué es Closure?

26

Preguntas a Desarrolladores Senior: ¿Por qué aprender Desarrollo Web?

Manipulación de Arrays

27

Introducción a Arrays

28

Mutabilidad e inmutabilidad de Arrays

29

Modificación básica del final con push( ), pop( )

30

Iteración con map( ) y forEach( )

31

Filtrado y reducción con filter( ) y reduce( )

32

Búsqueda de elementos con find( ) y findIndex( )

33

Crear copias con slice( )

34

Spread operator: casos de uso

Programación Orientada a Objetos

35

Anatomía de un Objeto

36

Trabajando con objetos en JavaScript

37

Función constructora

38

¿Qué es una clase?

39

Prototipos y herencias

40

Herencia en la práctica

41

Prototipos en la práctica

42

this en JavaScript

43

Proyecto: Crea una red social

44

Proyecto: Crea una red social parte 2

Asincronía en JavaScript

45

¿Cómo funciona el JavaScript Engine?

46

Promesas en JavaScript

47

Usando Async y await en JavaScript

48

For await of

49

¿Cómo funciona la web?

50

¿Cómo funciona HTTP?

51

Método GET en JavaScript

52

Método POST en JavaScript

53

Método DELETE en JavaScript

54

Importancia del id en el método DELETE

55

ECMAScript 6 y tus siguientes pasos

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Método POST en JavaScript

52/55
Recursos

¿Cómo enviar información desde un formulario web sin refrescar la página?

Enviar datos de un formulario web sin que la página se recargue es un desafío común en el desarrollo front-end. Aquí exploramos cómo lograrlo utilizando JavaScript para manejar eventos del formulario, estructurar datos y enviarlos al servidor. ¡Acompáñame y lo descubriremos juntos!

¿Cómo prevenir el refresco de página en un formulario?

Un problema común al enviar formularios es que la página se actualiza, perdiendo datos temporales o interrumpiendo experiencia del usuario. Para evitarlo:

  1. Escuchar el evento submit: Utilizamos addEventListener en el formulario para capturar cuando el usuario intenta enviar datos.
  2. Prevenir comportamiento predeterminado: Usamos event.preventDefault() para evitar que la página se recargue al enviar el formulario.
form.addEventListener('submit', function(event) {
    event.preventDefault();
    // Código para manejar el formulario
});

¿Cómo capturamos los datos del formulario?

Una vez que el refresco está prevenido, necesitamos acceder a los valores del formulario:

  1. Obtener los elementos del formulario: Usamos querySelector para encontrar elementos por su ID.
  2. Capturar datos ingresados: Accedemos a value del elemento para conseguir el texto ingresado por el usuario.
const title = event.currentTarget.querySelector('#title').value;
const content = event.currentTarget.querySelector('#content').value;

¿Cómo estructurar y enviar un objeto de datos al servidor?

Antes de enviar los datos, debemos estructurarlos en un objeto que el servidor espera recibir:

  1. Crear un User ID aleatorio: Generamos un número para simular un identificador de usuario.
  2. Estructurar los datos: Creamos un objeto con el título, contenido y userID.
  3. Hacer la función async: Facilitamos la ejecución del fetch.
async function createPost(title, content) {
   const userID = Math.floor(Math.random() * 1000);
   const post = {
      title,
      body: content,
      userId: userID
   };

   // Hacer un request al servidor
}

¿Cómo enviamos un request POST con fetch?

La clave es usar fetch para enviar un request POST con el objeto de datos:

  1. Especificar método y URL: Definimos el método POST y apuntamos a la URL correcta.
  2. Incluir el cuerpo de la petición: Añadimos nuestro objeto de datos estructurado en JSON.
async function createPostRequest(post) {
    const response = await fetch('URL_DEL_SERVIDOR', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(post)
    });
    
    if (response.ok) {
        console.log('Post creado exitosamente');
    } else {
        console.error('Error al crear el post');
    }
}

¿Cómo vinculamos el envío del formulario con nuestra función?

Finalmente, debemos ejecutar nuestra función de envío dentro del controlador de eventos del formulario.

form.addEventListener('submit', function(event) {
    event.preventDefault();
    const title = event.currentTarget.querySelector('#title').value;
    const content = event.currentTarget.querySelector('#content').value;
    createPostRequest({ title, content });
});

Y así, ¡tu formulario ahora envía datos al servidor sin recargar la página, utilizando JavaScript! Siguiendo estos pasos, mejoramos la experiencia del usuario y la eficiencia de nuestras aplicaciones web. No olvides persistir, experimentar y explorar nuevas posibilidades tecnológicas. ¡El futuro del desarrollo web está en tus manos!

Aportes 13

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si como a mi te genero la duda el porque no se brinda de manera explicita un "ID" al momento de realizar el post, te explico porque es: El servidor, al recibir el post, nota que falta el `id` y genera uno único para asegurar que cada post tenga un identificador único. Esto facilita el trabajo de los desarrolladores porque no se tiene que crear un `id` único y evita errores al asegurar que no haya duplicados. Este `id` puede ser generado usando diferentes métodos, como: * **Incremento Secuencial** * **UUID (Identificador Único Universal)** * **Timestamp** Desde las bases de datos: * Las bases de datos relacionales, como MySQL o PostgreSQL, a menudo tienen columnas con la propiedad `AUTO_INCREMENT` o `SERIAL`, que se incrementan automáticamente cada vez que se inserta un nuevo registro. * Las bases de datos NoSQL, como MongoDB, usan automáticamente un `_id` que es un objeto `ObjectId` único. Concusion: Generar un `id` automáticamente ahorra tiempo y reduce la posibilidad de errores, ya que no necesitas preocuparte por crear un identificador único manualmente. Espero haberlos ayudado.
Entiendo que a estas alturas "del partido" ya es necesario saber acerca de HTML, CSS y sobre todo Manipulación del DOM... Pero en ningún momento se menciona explícitamente eso, sólo de repente se pone muy obscuro el curso...
Que bonito cuando se programa completo y no se copia y se pega , así bien explicadito 😊😊😊
Esta clase está llena de elementos que no se abordaron en ninguna parte de este curso. Por ejemplo, HTML o el DOM. No entendí prácticamente nada.
Soy el único que no entendió nada 🥹
Parece que estas ultimas clases no pertenecieran a este curso.
Me parece una explicación muy liosa que para explicar el método POST se usen como ejemplo los POSTS de un blog.
Tengo esta duda, en ambos obtenemos un post, no debería identificarse como GET y otro POST? ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-12-05%20100958-3db9bf7a-3e35-4dca-b549-95e741f59477.jpg)
![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202025-03-06%20a%20la%28s%29%2015.25.41-8ce9b558-8393-408f-8379-1d538948c73a.jpg)porque no me aparece el post solo veo esos 3 elementos... algo debo activar? todo me salio pero no puedo ver cuando inserte el post ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202025-03-06%20a%20la%28s%29%2015.25.10-6b0d6dfd-1c5a-4d1f-af00-c519637b9eed.jpg)
Hiii! Aquí otra explicación adicional con la nueva parte del código. Si algo se puede mejorar, díganme! ```js /* NUEVA PARTE */ async function createPost(title, content) { const userId = Math.random(); //crea un número random para userID const post = { title: title, //será el title que el user ponga en el input body: content,//sera el content que el user ponga en el input userId: userId, //aquí tenemos el id previamente generado con Math.random }; sendHTTPRequest("POST", "https://jsonplaceholder.typicode.com/posts", post); //ahora subido la info con el método POST con nuestra función de fetch } //generamos el evento: form.addEventListener("submit", (event) => { event.preventDefault(); //para prevenir el refresh en la página const title = event.currentTarget.querySelector("#title").value; //obtiene el valor del elemento con el id: "title" const content = event.currentTarget.querySelector("#content").value; //obtiene el valor del elemento con el id: "content" createPost(title, content); //llama a la función para enviar los valores que obtuvimos del formulario }); ```
const listElement = document.querySelector(".posts");const postTemplate = document.getElementById("single-post");const form = document.querySelector("#new-post form");const fetchButton = document.querySelector("#available-posts button");const postList = document.querySelector("#posts-container"); function sendHTTPRequest(method, url, data) {  return fetch(url, {    method: method,    body: JSON.stringify(data),    headers: {      "Content-Type": "application/json",    },  }).then((response) => {    return response.json();  });} async function fecthPosts() {  const responseData = await sendHTTPRequest(    "GET",    "https://jsonplaceholder.typicode.com/posts"  );  console.log(responseData);  const listOfPosts = responseData;   for (const post of listOfPosts) {    const postContainer = document.createElement("article");    postContainer.id = post.id;    postContainer.classList.add("post-item");     const title = document.createElement("h2");    title.textContent = post.title;     const body = document.createElement("p");    body.textContent = post.body;     const button = document.createElement("button");    button.textContent = "DELETE Content";     postContainer.append(title);    postContainer.append(body);    postContainer.append(button);     listElement.append(postContainer);  }} fetchButton.addEventListener("click", fecthPosts); async function createPost(title, content) {  const userId = Math.random();  const post = {    title: title,    body: content,    userId: userId,  };   try {    const response = await sendHTTPRequest(      "POST",      "https://jsonplaceholder.typicode.com/posts",      post    );    console.log("Post creado:", response);  } catch (error) {    console.error("Error al crear el post:", error);  }} form.addEventListener("submit", (event) => {  event.preventDefault(); // Evita la recarga de la página  const title = event.currentTarget.querySelector("#title").value;  const content = event.currentTarget.querySelector("#content").value;   createPost(title, content);}); se me sigue recargando cuadno hago post alguien sabe si tengo algo mal? gracias
creo que por lo pronto voy a hacer el curso de manipulacion del DOM y cuando lo finalice regreso para entender mejor :,v
```js function sendHTTPRequest(method, url, data) { return fetch(url, { method: method, body: JSON.stringify(data), headers: { "Content-Type": "application/json", } }).then((response) => { return response.json(); }) } async function fecthPost(){ const responseData = await sendHTTPRequest( "GET", "https://jsonplaceholder.typicode.com/posts") console.log(responseData) const listOfPosts = responseData; const listElement = document.getElementById("posts-container"); // Limpiar el contenido anterior listElement.innerHTML = ''; for (const post of listOfPosts) { const postContainer = document.createElement("article"); postContainer.id = post.id; postContainer.classList.add("post-item"); const title = document.createElement("h2"); title.textContent = post.title; const body = document.createElement("p"); body.textContent = post.body; const button = document.createElement("button"); button.textContent = "DELETE Content"; // Aquí podrías agregar un event listener para el botón de eliminación postContainer.append(title); postContainer.append(body); postContainer.append(button); listElement.append(postContainer); } } function createNewPost(title, content){ const userId = Math.random() const post = { title: title, body: content, userId: userId, } sendHTTPRequest("POST", "https://jsonplaceholder.typicode.com/posts", post) .then(response => { console.log('Post created:', response); return fecthPost(); // Actualizar la lista de posts después de crear uno nuevo }) .catch(error => { console.error('Error creating post:', error); }); } const form = document.querySelector("form"); form.addEventListener("submit", (event) => { event.preventDefault(); const title = event.currentTarget.querySelector("#title").value; const content = event.currentTarget.querySelector("#content").value; createNewPost(title, content); }); const fetchButton = document.querySelector("#available-posts button"); fetchButton.addEventListener("click", fecthPost); ```