Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

137
Vistas
Mejores prácticas para enviar JSON a php manteniendo tipos de campo

Obviamente, si envío datos JSON a php usando una publicación AJAX u obtengo una solicitud, terminaré recibiendo solo el tipo de datos de cadena en la variable php $_POST.

¿Cuál es la mejor práctica para enviar campos JSON pero manteniendo sus tipos de datos? Mi idea sería enviar todo el JSON en un campo $_POST y luego decodificarlo una vez más.

Entonces en JavaScript en lugar de:

 $.post('test.php', {"stringparm":"a string","numparm": 66,"boolparm":true)}, function (result) ...

Yo usaría:

 params = '{"stringparm":"a string","numparm": 66,"boolparm":true)}'; $.post('test.php', {'params': params}, function (result) { .... }

Y en php yo haría:

 $params = json.decode($_POST['params']);

¿O hay un mejor camino?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Mi recomendación sería enviarlos como una cadena de consulta usando Fetch o Axios, también puede usar Ajax y debería enviar los distintos tipos de datos correctamente, y luego analizar la cadena de consulta en PHP de esta manera.

 parse_str($_SERVER['QUERY_STRING'], $data); $data = (object) $data;

Estoy seguro de que sabe cómo se ve su cadena de consulta estándar

 https://example.com/?user_id=value&someotherdata=value etc...

Una vez que tenga el objeto $data, puede acceder a los valores con la flecha -> operador.

 $user_id = $data->user_id

Aquí hay un script que uso para crear una cadena de consulta a partir de un objeto proporcionado.

 prepareQuerystring(url, paramsObject, isParamsObjectUsed, phpMethod = '') { if (url !== '') { let postUrl = `${url}${phpMethod}`; if (isParamsObjectUsed) { postUrl += `?`; let it = 0; let len = Object.keys(paramsObject).length for (let i in paramsObject) { if (it === len - 1) { postUrl = postUrl + [i] + '=' + paramsObject[i]; } else { postUrl = postUrl + [i] + '=' + paramsObject[i] + '&'; } it++; } return postUrl; } else { postUrl = `${url}${phpMethod}/`; return postUrl; } } else { let postUrl = `${window.location.href}${phpMethod}/`; if (isParamsObjectUsed) { postUrl += `?`; let it = 0; let len = Object.keys(paramsObject).length for (let i in paramsObject) { if (it === len - 1) { postUrl = postUrl + [i] + '=' + paramsObject[i]; } else { postUrl = postUrl + [i] + '=' + paramsObject[i] + '&'; } it++; } return postUrl; } else { postUrl = `${window.location.href}${phpMethod}/`; return postUrl; } }

}

El argumento url es su url base ( https://example.com )

El paramObject es su objeto JSON que es solo un objeto en Javascript.

 { user_id: 1, someotherdata: 'shoe' }

El argumento del método PHP está ahí para llamar a un método específico en php, simplemente se agrega después de la URL base, mi API me permite hacer llamadas de esta manera, es posible que la tuya no, así que puedes dejarlo como una cadena vacía ''.

Y el isParamsObjectUsed es un valor booleano, si pasa un objeto en el segundo argumento, esto será cierto, honestamente, no recuerdo haberlo configurado en falso, por lo que es posible que deba refactorizarlo y eliminarlo eventualmente.

He aquí un ejemplo de cómo usarlo.

 let url = prepareQuerystring( https://example.com/, { user_id: 1, someotherdata: 'shoe', someBool: true }, true )

Tendrá referencia a todos los parámetros como su tipo de datos en PHP utilizando este método. Uso Axios para enviar solicitudes http, pero esto también funciona con Ajax y Fetch, recomendaría usar Fetch o Axios. Principalmente porque no recuerdo cómo lo hice funcionar con Ajax, normalmente uso Fetch o Axios.

Usando Obtener

 fetch(url, { method: "POST" })

Espero que esto te ayude a orientarte en la dirección correcta. Hazme saber si tienes alguna pregunta.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda