如何在Adobe AIR应用程序中通过JavaScript将XML数据发布到URL?

时间:2009-05-31 06:55:53

标签: php javascript xml air

我正在编写一个应用程序,它将URL中的XML字符串和POST下载到另一个URL(设置为处理传入的“XML”字段)。我的第一部分是正确的 - 它下载了XML,我可以alert()以及所有这些,但我无法弄清楚如何将POST数据发送到服务器。

function pull() {
    var myLoader = new air.URLLoader();
    var myRequest = new air.URLRequest('http://something/something.xml');
    myLoader.addEventListener(air.Event.COMPLETE, pulled);
    myLoader.load(myRequest);
}

function pulled(evt) {
    if (evt.target.bytesTotal>0) {
        // alerting shows the full string just fine
        alert(evt.target.data);

        var myLoader = new air.URLLoader();
        var myRequest = new air.URLRequest('http://someplace/push.php');
        myRequest.method = air.URLRequestMethod.POST;
        // myVars = new air.URLVariables("xml="+evt.target.data); // 
        // alert(evt.target.data.toUpperCase());
        myRequest.data = "xml="+evt.target.data; // myVars;
        myLoader.dataFormat = air.URLLoaderDataFormat.TEXT;
        myLoader.addEventListener(air.Event.COMPLETE, pushed);
        myLoader.load(myRequest);
    }
}

我将第二个服务器PHP echo作为xml变量的内容,但我无法获得XML字符串的确切内容。我正在使用myRequest.data和/或dataFormat位进行操作。

有人可以解决这个问题吗?我知道这可能是一件简单的事情,但我现在正处于机智的尽头。

这是我的第一个AIR应用程序。

另一个相关问题(或子问题)是......

alert(evt.target.data);               // shows an alert box with the XML
alert(typeof evt.target.data);        // shows String
alert(evt.target.data.toUpperCase()); // shows the xml converted to upper case
alert(encodeURI(evt.target.data));    // shows up blank.
alert(escape(evt.target.data));       // shows up blank.

为什么?

1 个答案:

答案 0 :(得分:1)

错误似乎是您将参数分配给'数据'的方式...使用URLVariables。

var params:URLVariables = new URLVariables();
params.[name of parameter] = [value];

---就像params.xml =(你的XML)......来自你的例子:

// uses the dynamic object to add the 'xml' property to 'params' at runtime.
params.xml = evt.target.data

然后将request.data更改为request.data = params;

- URLVariables家伙是动态的 - 所以你可以像我上面描述的那样添加属性。

一个基本的例子 - 比我在这里的内容更完整:http://livedocs.adobe.com/flex/3/html/help.html?content=data_access_2.html