2008-09-24 25 views
8

Có tài liệu nào tối đa cho độ dài của dữ liệu chuỗi mà bạn có thể sử dụng trong phương thức gửi của XMLHttpRequest cho việc triển khai trình duyệt chính không?Tham số dữ liệu gửi() tối đa trên XMLHttpRequest Bài viết

Tôi đang gặp sự cố với Bài đăng XMLHttpRequest JavaScript không thành công trong FireFox 3 khi dữ liệu vượt quá khoảng 3k. Tôi đã giả định rằng Post sẽ hoạt động giống như một Form Form thông thường.

Tài liệu W3C đề cập đến thông số dữ liệu của phương thức gửi là DOMString nhưng tôi không chắc chắn cách các trình duyệt chính triển khai điều đó.

Đây là một phiên bản đơn giản của JavaScript của tôi, nếu bigText kết thúc khoảng 3k nó không thành công, nếu không nó hoạt động ...

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

Trả lời

5

Tôi tin rằng độ dài tối đa không chỉ phụ thuộc vào trình duyệt, mà còn trên máy chủ web. Ví dụ, máy chủ Apache HTTP có một LimitRequestBody directive cho phép bất cứ nơi nào từ 0 byte đến 2GB giá trị của dữ liệu.

2

Theo số XMLRPC spec, giới hạn thực duy nhất là kích thước của số nguyên và tăng gấp đôi.

2

Bạn không chỉ định cách nó không thành công, tuy nhiên mã hóa của bạn không chính xác. Bạn nên sử dụng encodeURIComponent không encodeURI.

Mặc định kích thước tối đa của thân thực thể yêu cầu trên máy khách có khả năng chỉ bị giới hạn bởi bộ nhớ khả dụng. Máy chủ như đã được chỉ ra có thể từ chối các tổ chức thực thể trên một kích thước nhất định. Ví dụ, IIS 6 và 7 có giới hạn mặc định 200KB.

Các vấn đề liên quan