2012-05-08 14 views
38

Cuando envío una solicitud de AJAX y envío los parámetros en queryString en el método send(),¿Cuál es la diferencia entre los datos del formulario y la carga útil de la solicitud?

La herramienta de captura XHR de Chrome Developer Tool muestra los parámetros bajo la carga útil de la solicitud. y cuando uso la función de publicación de jquery, La herramienta muestra los parámetros en la sección Datos del formulario.

¿Cuál es la diferencia?

+1

Para los futuros lectores siguen este: http://stackoverflow.com/questions/9597052/how-to-retrieve-request-payload –

Respuesta

27

no ha proporcionado suficiente información sobre cómo se utiliza la función de envío, pero supongo que no establece el tipo MIME para especificar que está enviando los datos del formulario

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 

los datos enviados son en este caso codificado como codifica una cadena de consulta

xhr.send("name=foo&value=bar"); 

de lo contrario, no se interpretará como datos de formulario por Herramientas del desarrollador.

jquery hace la mayoría del trabajo para usted en este sentido.

Actualización: Para responder de forma explícita cuál es la diferencia ...

  • si una petición (normalmente POST) tiene Content-type cabecera ajustado a application/x-www-form-urlencoded Se espera que el cuerpo sea en la forma de una norma querystring con codificación de url clave=valor pairs se unió por &. La sección de datos de formulario muestra los parámetros de valor-clave (cuando se visualizan como analizados). De esta manera era mucho más común en el pasado porque es un valor predeterminado para los formularios HTML.

  • otros casos se muestran en Solicitud de carga útil sección (y hoy en día analizado para la legibilidad, así como para formatos comunes como JSON).

+1

Los visitantes deben tener en cuenta que el 'xhr.setRequestHeader()' llamada debe ser colocado * entre * la llamada 'xhr.open()' y la llamada 'xhr.send()'. De lo contrario, obtendrá un error de excepción DOM. – Martin

+8

No responde la pregunta '¿Cuál es la diferencia entre los datos del formulario y la carga útil de la solicitud?', Solo dice cómo obtener uno u otro. – Medorator

Cuestiones relacionadas