Независимо от того, есть ли у вас проблемы с сервером Python, вы должны проверить прокси-сниффер, например Charles , Fiddler или даже FireBug . Результат выглядит хорошо, хотя я не уверен, что символ новой строки% 0A, который вы видите в трассировке (wikiload2.toString), вызывает проблемы при разборе loadVars. Попробуйте сначала удалить это.
Я не уверен, что это исправление, но вы говорите, что вы новичок в AS2, поэтому позвольте мне пойти немного дальше с вашим кодом для дальнейшего использования. Я предполагаю, что есть причина, по которой вы должны быть в AS2 и не можете работать с AS3. Тем не менее, даже с AS2 я призываю вас заняться объектно-ориентированным программированием. Как только вы это сделаете, станет намного проще структурировать ваш код, работать со сторонними фреймворками и поддерживать уровень сопровождения в ваших проектах.
Например, в рамках есть один, называемый ASAPFramework . У него есть очень простой объект под названием LoadVarsXML, который позволит вам загрузить результат вашей загрузки в виде объекта XML. Отладка лучше, чем структура loadVars как в python, так и во flash.
Еще один совет; В AS2 область вызова метода может отличаться от области объявления метода. Другими словами, переменные, которые определены в том же объекте, что и метод, могут быть недоступны, когда вы передаете этот метод для выполнения в обратных вызовах событий, таких как onLoad. Один из способов обойти это - хранить каждое значение глобально, как вы делаете с префиксом _root. Это, однако, делает ваш код трудным для чтения, трудным для понимания и, как вы заметили, трудным для отладки. * Использование _root, как правило, большое нет-нет *. Если вы продолжите расширять свой пример сценария выше, вы в конечном итоге окажетесь в коде спагетти, который никто не попросит помочь, и он не сможет его понять.
Способ обойти это, начав использовать классы вместо рамочных сценариев, но даже если вы захотите придерживаться их, вы уже можете немного их очистить, обернув методы обратного вызова с Delegate.create (scope, method) .
Вот как будет выглядеть ваш код с использованием метода Delegate.create. Я также позволил себе переписать переменные wikiLoad1 и 2 в wikiLoader и wikiResults. Это немного упрощает их задачи.
_root.buttonBkg.onPress = Delegate.create(this, handleButtonPress);
function handleButtonPress():Void {
var wikiResult:LoadVars = new LoadVars();
wikiResult.onLoad = Delegate.create(this, handleWikiLoad);
var wikiLoader:LoadVars = new LoadVars();
wikiLoader.wikiname = wikiterm;
wikiLoader.sendAndLoad("http://myURL.script.py",wikiResult,"POST");
trace("?wikiname=" + wikiLoader.wikiname);
trace("did the sendAndLoad");
}
function handleWikiLoad(success:Boolean):Void {
trace("entered wikiLoader.onLoad function");
if (success) {
_root.createTextField("wikidisplay",_root.getNextHighestDepth(),0,150,550,380);
_root.wikidisplay.html = true;
_root.wikidisplay.htmlText = wikiResult.displayhtml;
trace("wikiResult.displayhtml is" + wikiResult.displayhtml);
trace(wikiResult.toString());
trace("success route");
} else {
_root.createTextField("wikidisplay",_root.getNextHighestDepth(),0,150,550,380);
_root.wikidisplay.text = "Error connecting to server.";
trace("error route");
}
}
Я думаю, что это выглядит намного чище и поэтому легче для понимания. Как уже говорилось, попробуйте удалить символ новой строки в Python, и, если вы можете, проверить LoadVarsXML из ASAP. Это серьезно упростит жизнь в AS2.