2009-10-30 23 views
8

Intenté anular el contenido del encabezado de solicitud HTTP mediante la función AJAX de jQuery. Parece que esteNo puedo cambiar el encabezado de solicitud HTTP Valor de tipo de contenido usando jQuery

$.ajax({ 
    type : "POST", 
    url : url, 
    data : data, 
    contentType: "application/x-www-form-urlencoded;charset=big5", 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Accept-Charset","big5"); 
     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=big5"); 
    }, 
    success: function(rs) { 
    target.html(rs); 
    } 
}); 

cabecera Content-Type es predeterminado a "urlencoded-x-www-formulario de solicitud /; charset = UTF-8", pero, obviamente, no puede anular su valor, no importa lo uso se aproxima a 'contentType' o 'beforeSend'. ¿Podría alguien darme una pista de que cómo puedo o puedo cambiar el valor del tipo de contenido de la solicitud HTTP? muchas gracias.

Por cierto, ¿hay alguna buena documentación que pueda estudiar el manejo de la codificación XMLHttpRequest de JavaScript?

+0

Consulte http://stackoverflow.com/questions/1145588/cannot-properly-set-the-accept-http-header-with-jquery, una pregunta duplicada a esta. –

+0

@Jim: en realidad no; esa otra Q es sobre el encabezado Accept, no sobre establecer el tipo de contenido. –

+0

De la documentación jQuery ajax: Los datos siempre se transmitirán al servidor utilizando el juego de caracteres UTF-8; debe decodificar esto apropiadamente en el lado del servidor. http://api.jquery.com/jQuery.ajax/ – Bkress

Respuesta

2

De acuerdo con los documentos de jQuery, el juego de caracteres siempre será UTF-8: http://jqapi.com/#p=jQuery.ajax. Supongo que lo mismo vale para accept-charset.

Big5 es un subconjunto de UTF-8, ¿verdad? Entonces debería ser posible codificarlo y decodificarlo en el lado del servidor.

+1

[nitpicking] No, Big5 no es un subconjunto de UTF-8, pero bien puede ser un subconjunto de Unicode. –

Cuestiones relacionadas