Error 400 al enviar datos JSON a WordPress Admin Ajax con Fetch API

1 minuto de lectura

Uso Fetch Api con WordPress admin-ajax.php.

  1. Enviar datos como URLSearchParams. Esta funcionando.
    let data = {
        action: 'my_action',
    }
    
    fetch( ajaxurl, {
        method: 'POST',
        credentials: 'same-origin',
        body: new URLSearchParams(data)
    });
  1. Enviar datos como FormData. Esta funcionando.
    let data = New FormData();
    data.append('action', 'my-action');
    
    fetch( ajaxurl, {
        method: 'POST',
        credentials: 'same-origin',
        body: data
    });
  1. Enviar datos como JSON. NO FUNCIONA, 400 ERROR.
    let data = {
        action: 'my_action',
    }
    
    fetch( ajaxurl, {
        method: 'POST',
        credentials: 'same-origin',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    });

Tengo curiosidad por qué tiene un error 400? algo que extraño?

  • Yo también me involucré con eso. ¿Lo resolviste?

    – Adiel

    25 de enero de 2022 a las 9:51

cambie su inicio de sesión de recuperación como se muestra a continuación e intente. Dado que está especificando ‘Content-Type’: ‘json’, no es necesario especificar el json.

    fetch( ajaxurl, {
        method: 'POST',
        credentials: 'same-origin',
        headers: {
          'Content-Type': 'application/json'
        },
        body: data
    });

  • No. Necesitamos encadenar el json ya que especificamos 'Content-Type': 'application/json'.

    – piedra nubosa

    14 de agosto de 2021 a las 15:39

¿Ha sido útil esta solución?