2012-04-26 27 views
6

Tôi đã rơi vào tình huống mà tôi bắt buộc phải thực hiện yêu cầu JSONP Ajax GET (tên miền chéo) và tôi cần gửi một tài liệu dài 2000 ký tự làm tham số.Làm cách nào để nén các tham số GET trong Javascript để tránh bị giới hạn kích thước trình duyệt?

Vì nhiều lý do, tôi không thể thay đổi từ JSONP thành yêu cầu bình thường và tôi không thể duy trì trạng thái phía máy chủ để chia nhỏ yêu cầu thành nhiều yêu cầu.

Với những giới hạn này, có cách nào để nén văn bản dài bằng cách nào đó trong Javascript để tôi có thể vừa với kích thước giới hạn GET 2000 không? Tôi cũng cần phải biết nếu tôi có thể dễ dàng giải nén nó ở phía máy chủ?

Vì đây là yêu cầu GET, nó chỉ có thể được gửi dưới dạng văn bản để nén nhị phân có thể không thực hiện được?

+0

tài liệu mà bạn đang cố gắng gửi là gì? Bạn có thể mã hóa các bộ phận không? – Deebster

+3

Bạn không thể chuyển sang sử dụng 'POST' và proxy cho máy chủ cục bộ của mình để thực hiện yêu cầu miền chéo? Điều gì sẽ xảy ra nếu tài liệu của bạn trở nên quá lâu đến mức ngay cả phương pháp nén của bạn cũng để lại> 2000 ký tự? – mellamokb

+0

nếu đó là văn bản và bạn không thể chuyển sang POST. bạn có thể thử một thuật toán huffman, nó được một tỷ lệ nén thực sự tốt – Jarry

Trả lời

2

Chuyển sang POST dữ liệu thô và sử dụng JSON hoặc XML để lưu và gửi cấu trúc lớn qua yêu cầu.
Nếu bạn sử dụng JQuery ví dụ bạn có

jQuery.post(url, [data], [callback], [type]) 

nơi dữ liệu có thể là XMLdoc, jsonObj, html, văn bản, vv ...

thay vì dữ liệu bạn có thể có một cái gì đó như:

$.post("path/to/my/file.php", { func: "yourFunctionName" }, 
    function(data_returned_from_backend_json){ 
    //use data_returned_from_backend_json.properties 
    } 
, "json"); 

function yourFunctionName() 
{ 
    //save all GET params into a json structure 
} 

nguồn: http://docs.jquery.com/Post

+0

Tôi đã đề cập đến Tôi không thể thay đổi thành POST. Đó là cuộc gọi tên miền chéo. –

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