2010-08-15 39 views
6

tôi nhận được lỗi sau khi cố gắng vượt qua các biến qua URLRequestMethod.POST;Biến mã hóa URL trong AS3?

Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.

Có một phương pháp cho chuỗi URL Encoding?

Trả lời

7

Giải pháp cho vấn đề này là: Bạn phải thiết lập URLLoaderDataFormat để URLLoaderDataFormat.TEXT không URLLoaderDataFormat.VARIABLES.VARIABLES nghĩa loại dữ liệu khác nhau, không nhiều mục trong URLVariables.

21

Có các hàm escape() và unescape() làm hàm mức cao nhất của ActionScript 3 để mã hóa/giải mã URL.

+1

Cũng hữu ích là 'encodeURIComponent' và' decodeURIComponent' nếu bạn muốn mã hóa dấu phân cách. –

6

Thông báo lỗi đó thường do gây ra chuỗi truy vấn không hợp lệ cho đối tượng URLVariables. Nhưng bạn không cần phải vượt qua chuỗi truy vấn trong hầu hết các trường hợp. Bạn chỉ có thể thêm các cặp vào đối tượng như các thuộc tính thông thường và để cho nó thực hiện việc mã hóa và thoát (đó là những gì lớp này có nghĩa là để làm).

var vars:URLVariables = new URLVariables(); 
vars.param1 = "Text to be escaped. Works for non ascii: ñ"; 
vars.param2 = "http://www.google.com/?q=something&test=1234"; 
trace(vars.toString()); 

Theo dõi, tất nhiên, không cần thiết, nó chỉ để bạn có thể thấy rằng mã hóa hoạt động.

+1

Điều này đã giúp tôi giải quyết vấn đề khác. Cảm ơn. – Mattias

0

Tôi đã gặp vấn đề này nhiều lần và thường là dòng myLoader.dataFormat = URLLoaderDataFormat.VARIABLES mà tôi đã bỏ lỡ. Hãy thử xóa dòng này nếu bạn có:

request.method = URLRequestMethod.POST 

và cuối cùng đảm bảo bạn nhận được phản hồi thông qua biến theStatus=okay thì điều đó sẽ thực hiện thủ thuật.