2008-09-24 4 views
8

Есть ли документированная максимальная длина строковых данных, которые вы можете использовать в методе отправки XMLHttpRequest для основных реализаций браузера?Макс. Длина параметра send() данных на XMLHttpRequest Post

У меня возникла проблема с сообщением XMLHttpRequest в JavaScript, которое не срабатывает в FireFox 3, когда данные превышают приблизительно 3k. Я предполагал, что Почта будет вести себя так же, как обычная почта формы.

В документах W3C указано, что параметр данных метода отправки - это DOMString, но я не уверен, как это делают основные браузеры.

Вот упрощенная версия моего JavaScript, если BigText закончится примерно ок он выходит из строя, в противном случае он работает ...

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; 
     } 
    } 
} 

ответ

5

Я считаю, что максимальная длина зависит не только от браузера, но и на веб-сервер. Например, HTTP-сервер Apache имеет LimitRequestBody directive, который позволяет от 0 до 2 ГБ данных.

2

В соответствии с XMLRPC spec единственными реальными ограничениями являются размеры целых чисел и парных разрядов.

2

Вы не указали, как это происходит, но ваша кодировка неверна. Вы должны использовать encodeURIComponent, а не encodeURI.

По умолчанию максимальный размер тела объекта запроса на клиенте, скорее всего, ограничен доступной памятью. Сервер, как уже указывалось, может отклонить тела сущностей по определенному размеру. Например, IIS 6 и 7 имеют предел по умолчанию 200 КБ.

 Смежные вопросы

  • Нет связанных вопросов^_^