Post 钛是';t将值过帐到ColdFusion

Post 钛是';t将值过帐到ColdFusion,post,coldfusion,titanium,Post,Coldfusion,Titanium,这是我的钛代码: var loginReq = Titanium.Network.createHTTPClient({ onload: function(e){ // just displays the response var webview = Titanium.UI.createWebView({html:this.responseText}); win.add(webview); } }); loginReq.open("

这是我的钛代码:

var loginReq = Titanium.Network.createHTTPClient({
    onload: function(e){
        // just displays the response
        var webview = Titanium.UI.createWebView({html:this.responseText});
        win.add(webview);
    }
});

loginReq.open("POST",url);
var params = {
    email: email.value,
    passowrd: password.value
};

loginReq.send(params); // this is sending nothing according to a CF variable dump
ColdFusion页面只是转储所有变量,并显示在iPhone模拟器上。但是它给了我一个空的变量结构,这意味着实际上没有变量被发送进来


如何修复钛代码以实际发布数据?如果要将发布数据发送到脚本,则必须相应地设置标题:

loginReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

如果要向API发送JSON数据,则可能需要对参数进行字符串化以发送它们:

loginReq.send(JSON.stringify(params));

编辑:
根据文档,这是自动完成的(参见注释)。在我的一些网络客户端中,我必须明确地这样做,尽管


此外,您可能还希望实现
onerror
回调,因此,如果您的调用因任何原因失败,您将知道原因:

var loginReq = Titanium.Network.createHTTPClient({
    onload: function(e){
        // just displays the response
        var webview = Titanium.UI.createWebView({html:this.responseText});
        win.add(webview);
    },

    onerror: function(e) {
        Ti.API.debug('Status: ' + this.status);
        Ti.API.debug('Response: ' + this.responseText);
    }
});

据我所知,根据文档,一切看起来都是正确的。您是如何转储变量的?当console.log(params)失败时,它给了您什么?我在倒变量。在阅读了你下面的评论之后,我研究了转储所有作用域,发现变量实际上并没有转储所有变量,这就是我的问题!附带问题:如何转储所有变量?我尝试了getPageContext().getBuiltInScopes(),但出现了“找不到getBuiltInScopes方法”错误。我不确定,通常会单独转储它们。变量、表单、url、cgi、服务器、应用程序、请求、会话、cookie是主要的。根据Tianium的文档,不是这样,但我知道什么,我不使用Tianium。诚然,文档中另有说明,但我必须将其用于我的一些网络客户端,才能使其正常工作。老实说:我不知道为什么会这样,我希望有一个适当的解释;)有人吗?在那里放置json字符串没有错,只是不会在服务器上生成表单参数。因为我们不知道OP“ColdFusion页面只是转储所有变量”的确切含义,所以我们不知道他是如何访问发布的数据的。我假设他列出了变量范围,但无论如何都不会列出POST和GET范围。我在倒变量。你是对的!我以为变量转储了所有变量,但它并没有转储表单!世界跆拳道联盟?!真是个怪胎(我在CF开发了大约10年)!谢谢你的主意。那么我应该删除这个问题吗?它最终在没有setRequestHeader的情况下工作,与我最初发布的内容相同。