Проблема передачи данных из Javascript во Flex - PullRequest
3 голосов
/ 02 марта 2011

Я использую ExternalInterface во Flex для извлечения строки в кодировке AMF из Javascript. Проблема заключается в том, что строка в кодировке AMF иногда содержит \ u0000, что заставляет ExternalInterface возвращать ноль вместо кодированной строки из Javascript.

Есть идеи, как это решить?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 02 марта 2011

\ 0000 ошибочно интерпретируется как EOF при чтении внешних данных.То же самое происходит и в файлах XML.

Вы должны иметь возможность заменить ее однозначной последовательностью символов перед передачей строки во Flash и обратно при получении в ActionScript.В функции JavaScript используйте что-то вроде

return returnString.replace (/\0000/g, "{nil}");

. Это должно удалить ненужные символы \ 0000 из строки перед возвратом во Flash.

На стороне Flash используйте

receiveString = receiveString.replace (/\{nil\}/g, "\u0000"); 

непосредственно после получения данных.

2 голосов
/ 02 марта 2011

Кодирование вывода AMF pyamf в base64 поможет.

Вот часть кодирования в python:

encoder = pyamf.get_encoder(pyamf.AMF3)
encoder.writeObject(myObject)
encoded = base64.b64encode(encoder.stream.getvalue())

Вот часть декодирования в AS3:

var myDecoder:Base64Decoder = new Base64Decoder();
myDecoder.decode(base64EncodedString);
var byteArr:ByteArray = myDecoder.toByteArray()
byteArr.position = 0;
var input:Amf3Input = new Amf3Input();
input.load(byteArr);                
var test:MyObject = input.readObject();
...