# 2101: Строка, переданная в URLVariables.decode (), должна быть строкой запроса с URL-кодом, содержащей пары имя / значение

У меня есть этот flash-код. Он отправляет счет и имя пользователя в моей игре на savescores.php. Но у меня есть ошибка выше. Я изменил URLLoaderDataForma.VARIABLES на TEXT, но все равно такая же ошибка. Что мне делать, чтобы исправить эту проблему? Заранее спасибо..

private function SendScore(score:int) { var variables:URLVariables = new URLVariables(); variables.score = score; variables.username = username; var urlloader:URLLoader = new URLLoader(); var urlrequest:URLRequest = new URLRequest('http://localhost:90/savescores.php'); urlrequest.method = URLRequestMethod.POST; urlrequest.data = variables; urlloader.dataFormat = URLLoaderDataFormat.TEXT; urlloader.load(urlrequest); urlloader.addEventListener(Event.COMPLETE, CompleteHandler, false, 0, true); urlloader.addEventListener(IOErrorEvent.IO_ERROR , ErrorHandler, false, 0, true); } private function CompleteHandler(e:Event) { var vars:URLVariables = new URLVariables(e.target.data); if(vars.success) trace('Saving succeeded'); else ('Saving failed'); } private function ErrorHandler(e:IOErrorEvent) { trace('Error occured'); } 

Я предполагаю, что проблема не в запросе, а в обработке ответов. Вы создаете vars как URLVariables , но, вероятно, e.target.data не соответствует ожидаемому формату. Значение Trace e.target.data для получения дополнительной информации.

ОТВЕТ: Проблема была с PHP

– Вы должны вернуть var в AS3 или вы получите эту ошибку.

Я публикую это, потому что, если зритель не читает комментарии, они не будут знать, в чем проблема и какое решение. Анил, который задал этот вопрос, заявил, что это проблема с PHP, а не с3, но не дает никаких причин, почему. Кажется, что ответ, отмеченный правильно, не является достаточным ответом, потому что он предлагает только возможное решение. Где Анил, признал, что это проблема с php. Я считаю, что этот ответ более полный и может помочь кому-то, у кого есть эта проблема.

У меня была аналогичная проблема. Проблема была в php. Если вы не вернете что-то из php, вы получите эту ошибку.

Flash не любил ничего, возвращаемого с php, и дал следующую ошибку:

Ошибка: Ошибка # 2101: Строка, переданная в URLVariables.decode (), должна быть строкой запроса с URL-кодом, содержащей пары имя / значение. при ошибке $ / throwError () на flash.net::URLVariables/decode () на flash.net::URLVariables () на flash.net::URLLoader/onComplete ()

Вот часть моего PHP, которая ничего не вернула:

 if($ConfirmedEmail=="true") { echo "Status=true"; } if($ConfirmedEmail=="false") { echo "Status=false"; } 

Но если это не было ни истинным / ложным, это ВЫХОД НИЧЕГО. = Flash не нравится!

Таким образом, PHP-код должен был быть таким:

 if($ConfirmedEmail=="true") { echo "Status=true"; } else if($ConfirmedEmail=="false") { echo "Status=false"; } else { echo "Status=Nada"; } 

Вот мой код AS3 для вас. Надеюсь, это поможет кому-то.

 public function checkEmail(e:Event = null) { var urlreq = new URLRequest("http://www.MyWebsite.com/myScript.php"); urlreq.method = URLRequestMethod.POST; var urlvars = new URLVariables(); urlvars.userID = Main.userID; urlreq.data = urlvars; var loader:URLLoader = new URLLoader(urlreq); loader.addEventListener(Event.COMPLETE, completed); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.load(urlreq); } public function completed(event:Event):void { var variables:URLVariables = new URLVariables(event.target.data); trace("Email Confirmed: " + variables.Status); }