AS3中如何对变量进行URL编码?

6
尝试使用URLRequestMethod.POST传递变量时,出现以下错误:

错误:错误#2101:传递给URLVariables.decode()的字符串必须是包含名称/值对的URL编码查询字符串。

是否有一种方法进行字符串URL编码?
4个回答

21

在ActionScript 3中,有escape()和unescape()作为顶级函数用于URL编码/解码。


1
如果您想编码分隔符,encodeURIComponentdecodeURIComponent也非常有用。 - Dan Garant

7
解决此问题的方法是:将URLLoaderDataFormat设置为URLLoaderDataFormat.TEXT,而不是URLLoaderDataFormat.VARIABLES。因为VARIABLES表示不同类型的数据,而不是URLVariables中的多个项。

6

该错误消息通常是由于向URLVariables对象传递非有效的查询字符串而导致的。但在大多数情况下,您不需要传递查询字符串。您可以像添加常规属性一样向对象添加键值对,并让它执行编码和转义(这就是此类的用途)。

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());

当然,跟踪信息并不是必要的,只是为了让您看到编码已经生效。

1
这帮助我解决了另一个问题。谢谢。 - Mattias

0

我遇到过这个问题很多次,通常是因为我错过了myLoader.dataFormat = URLLoaderDataFormat.VARIABLES这一行。如果你有这一行,请尝试将其删除:

request.method = URLRequestMethod.POST

最后,请确保您通过变量theStatus=okay接收响应,那么就可以解决问题了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接