Thanks for the info. I tried JSON and normally I have no problems, but it seems PHP's json_decode(), as well as jQuery's getJSON(), as well as JavaScript's eval() functions fail to decode the "data" tag (shown in the xml below). Apparently the forward slashes (/) have to be escaped (\/) and even after doing so I had no luck. It was weird because if I manually copy and paste the JSON into the script, it works fine, but as a string variable, it fails. Whatever. I decided to try boost::serialize with boost XML archive. XML works fine (even before using boost). It works well except for the bloating, and you must declare all tags and sometimes values, or else it throws exceptions (stream/undefined/etc).
Here's how it's represented via boost::serialize:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="5">
<image class_id="0" tracking_level="0" version="0">
<id>5</id>
<format>image/gif</format>
<command>get</command>
<data>/9j/4AAQSkZJRgABAQAAAQABAAD//gATYjQ0OGUyYjgwNzg3ZWE2MwD/2wBDAAgG
BgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx
NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABGAMgDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED
AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2Jy
ggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1
dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJ
ytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAA
AAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJB
UQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNE
RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJma
oqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP0
9fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAopCaM0ALRSZozQAtFJmjNAC0UmaM0A
LRSZozQAtFJmjNAC0UmaM0ALRSZozQAtFJmjNAC0UmaM0ALRSZozQAtFFFABRRRQ
A09aKD1ooAKK5LxJ8QdI8O3P2PEl5fdPs8HJU9gT2PtyawJviR4ijiMw8GXSwjnc
5fp7/JXTDB1ppNLR97L8zKVaEXa56ZXk/imTx74cgudWfXbcWnnYSJFViAx4UBk7
D+VMtvjJe3E6wR+HRNKxwEjuDuJ+m01hePvG134hsLbT7jR59NKSeayysSX4wMZU
epruwuDrU6qU4qz3vZmFWtCUbxbv8zb8BeNvE/iHxNDY3VzFLbBGkmPkqCFA7EY7
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
ABgUYoooAMCjAoooAMCjAoooAWiiigD/2Q==
</data>
</image>
</boost_serialization>
id/format/command/data are the important variables. Command variable tells C++ what PHP wants. C++ fills in data variable, sends it to PHP, PHP sends it to page via AJAX, AJAX changes the data variable and sends it back to PHP via AJAX, and PHP sends it back to C++ for finalization. Sometimes certain tags aren't necessarily used, but boost requires they be defined, so I just null them out before sending back and forth then resync afterwards.
That's just the basic idea. I may expand on it tomorrow. G'night.