xhr open example javascript ajax xmlhttprequest

javascript - open - xmlhttprequest post json



Longitud máxima del parámetro de datos send() en XMLHttpRequest Post (3)

Creo que la longitud máxima depende no solo del navegador, sino también del servidor web. Por ejemplo, el servidor Apache HTTP tiene una directiva LimitRequestBody que permite desde 0 hasta 2 GB de datos.

¿Hay un máximo documentado de la longitud de los datos de cadena que puede utilizar en el método de envío de XMLHttpRequest para las principales implementaciones de navegador?

Me estoy encontrando con un problema con JavaScript XMLHttpRequest Publicar falla en FireFox 3 cuando los datos son más de aproximadamente 3k. Asumía que el Post se comportaría de la misma forma que un Post de forma convencional.

Los documentos W3C mencionan que el parámetro de datos del método de envío es un DOMString, pero no estoy seguro de cómo lo implementan los principales navegadores.

Aquí hay una versión simplificada de mi JavaScript, si BigText está por encima de 3k, falla, de lo contrario, funciona ...

var xhReq = createXMLHttpRequest(); function createXMLHttpRequest() { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} try { return new XMLHttpRequest(); } catch(e) {} alert("XMLHttpRequest not supported"); return null; } function mySubmit(id, bigText) { var url = "SubmitPost.cfm"; var params = "id=" + id + "&bigtext=" + encodeURI(bigText); xhReq.open("POST", url, true); //Send the header information along with the request xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhReq.setRequestHeader("Content-length", params.length); xhReq.setRequestHeader("Connection", "close"); xhReq.onreadystatechange = onPostSubmit; xhReq.send(params); } function onPostSubmit() { if (xhReq.readyState==4 || xhReq.readyState=="complete") { if (xhReq.status != 200) { alert(''BadStatus''); return; } } }


De acuerdo con la especificación XMLRPC , los únicos límites reales están en el tamaño de los números enteros y dobles.


No especifica cómo falla, pero su codificación es incorrecta. Debería usar encodeURIComponent no encodeURI.

Por defecto, el tamaño máximo del cuerpo de la entidad de solicitud en el cliente probablemente solo esté limitado por la memoria disponible. El servidor como ya se ha señalado puede rechazar cuerpos de entidad de un cierto tamaño. IIS 6 y 7, por ejemplo, tienen un límite predeterminado de 200 KB.