¿Cómo puedo enviar datos JSON desde Javascript en el navegador, a un servidor y PHP parse ahí?
- json_decode podría ser lo que estás buscando?
- esto le ayudará a: [enviar datos json desde javascript][1] [1]: stackoverflow.com/questions/1255948/…
- Esto podría ayudarle a stackoverflow.com/…
- Hola a todos, gracias por las respuestas. En realidad, tengo una solución completa y bien. Quería publicar a este sitio, porque yo vengo aquí todo el tiempo para la información y la quería para finalmente proporcionar cierta información. Pero acabo de crear mi cuenta, y no me permite enviar la respuesta por 8 horas 🙁
he conseguido mucha información por aquí, así que quería publicar una solución que he descubierto.
El problema: Obtener datos JSON desde Javascript en el navegador, el servidor, y teniendo en PHP con éxito analizarlo.
medio Ambiente: Javascript en un navegador (Firefox) en Windows. LÁMPARA de servidor como servidor remoto: PHP 5.3.2 en Ubuntu.
Lo que funciona (versión 1):
1) JSON es sólo un texto. De texto en un formato determinado, sino simplemente una cadena de texto.
2) En Javascript,
var str_json = JSON.stringify(myObject)
me da la cadena JSON.3) yo uso el AJAX objeto XMLHttpRequest en Javascript para enviar los datos al servidor:
4) En el servidor, el código PHP para leer la cadena JSON:
Este lee los raw POSTERIOR de los datos.
$str_json
ahora contiene exactamente cadena JSON desde el navegador.Lo que funciona (versión 2):
1) Si quiero usar el
"application/x-www-form-urlencoded"
el encabezado de la solicitud, necesito crear un mensaje estándar de la cadena de"x=y&a=b[etc]"
de modo que cuando PHP se pone, se puede poner en el$_POST
matriz asociativa. Así, en Javascript en el navegador:PHP ahora será capaz de rellenar el array de $_POST cuando puedo enviar str_json a través de AJAX/XMLHttpRequest como en la versión 1 de arriba.
Visualización de los contenidos de
$_POST['json_string']
mostrará la cadena JSON. El uso de json_decode() en el $_POST elemento de la matriz con la cadena json correctamente decodificar los datos y ponerlo en una matriz o un objeto.La trampa me encontré en:
Al principio, traté de enviar la cadena JSON con el encabezado de la aplicación/x-www-form-urlencoded y, a continuación, trató de leer inmediatamente fuera de la $_POST matriz en PHP. El array de $_POST siempre estaba vacía. Eso es porque se está a la espera de los datos de la forma yval=xval&[rinse_and_repeat]. Sin embargo, no encontró tales datos, sólo la cadena JSON, y simplemente se la tiró a la basura. He examinado los encabezados de solicitud, y el POST de que los datos se envían correctamente.
Del mismo modo, si yo uso el application/json encabezado, yo de nuevo, no puede acceder a los datos enviados a través del array de $_POST. Si desea utilizar el application/json encabezado de tipo de contenido, entonces usted debe tener acceso a la cruda POST de datos en PHP, a través de php://input, no con $_POST.
Referencias:
1) Cómo acceder a los datos POST en PHP: Cómo acceder a los datos POST en PHP?
2) Detalles sobre el application/json tipo, con algunos ejemplos de objetos que se pueden convertir cadenas JSON y se envía al servidor: http://www.ietf.org/rfc/rfc4627.txt
request.setRequestHeader
es para?Archivo Javascript usando jQuery (más limpia, pero la biblioteca de la sobrecarga):
Archivo PHP (process.php):
Tenga en cuenta que si utiliza funciones de devolución de llamada en tu javascript:
Debe, en su archivo PHP, devolver un objeto JSON (javascript formato), con el fin de obtener un «hecho/éxito’ resultado en el código Javascript. En un mínimo de devolución/imprimir:
Ver Petición Ajax de retorno de 200 OK pero error evento es disparado en lugar de éxito
Aunque para algo un poco más grave que debe ser enviando un adecuado encabezado explícitamente con el correspondiente código de respuesta.
Ejemplo Simple en JavaScript para HTML input-campos (enviar al servidor JSON, el análisis de JSON en PHP y envío a cliente) el uso de AJAX:
Archivo PHP ajax-test.php :
PHP se ha construido en función json_decode(). Acaba de pasar la cadena JSON en esta función y se va a convertir para el PHP equivalente string, array o un objeto.
Con el fin de pasar como una cadena de Javascript, puede convertir a JSON utilizando
o de una biblioteca, tales como Prototipo
Hay 3 formas relevantes para enviar Datos desde el Lado del cliente (HTML, Javascript, Vbscript, etc..) para el Lado del Servidor (PHP, ASP, JSP, etc…)
HTML del formulario de Publicación de la Solicitud (GET o POST)
Este es el método más comúnmente utilizado, y podemos enviar más Datos a través de este método
AJAX
Este es el método Asincrónico y este tiene que trabajar de manera segura, aquí también nos puede enviar más Datos.
Cookie
Esta es bonito use una pequeña cantidad de insensible de datos. esta es la mejor manera de trabajar con los bits de datos.
En su caso, Usted puede preferir formulario HTML post o AJAX. Pero antes de enviarlos al servidor de validar su json por usted mismo o utilizar el enlace de como http://jsonlint.com/
Si usted tiene un Objeto Json convertirlo en una Cadena JSON.stringify(objeto), Si tiene cadena JSON enviar como es.
el uso de JSON.stringify(yourObj) o el Objeto.toJSON(yourObj) último es para el uso de prototype.js, a continuación, enviar de usar lo que quieras, ajax o presentar y utilizar, como se ha sugerido, json_decode ( http://www.php.net/manual/en/function.json-decode.php ) para analizar en php. Y, a continuación, se puede utilizar como una matriz.
Recomiendo la jquery.post() método.
Usted puede convertir el objeto en cadena urlencoded:
He encontrado manera fácil de hacer, pero sé que no es perfecto
1.asignar json
si JSON es
en —main.php —-
en —— second.php —–