Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

135
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda