json响应未在新窗口中打开

时间:2013-12-19 11:41:00

标签: javascript titanium titanium-mobile

我想在新窗口中打开json响应,我尝试了很多但没有获得成功,如果有人可以帮助我,我们将不胜感激。

这是我的app.js代码

Titanium.UI.setBackgroundColor('#fff');
var tabGroup = Titanium.UI.createTabGroup();

var login = Titanium.UI.createWindow({
    title:'User Authentication Demo',
    tabBarHidden:true,
    url:'main_windows/login.js'
});

var loginTab = Titanium.UI.createTab({
    title:"Login",
    window:login
});

tabGroup.addTab(loginTab); 
tabGroup.open();

这是我的login.js代码

var win = Titanium.UI.currentWindow;

var UserLogin = Titanium.UI.createTextField({
    color:'#336699',
    top:10,
    left:10,
    width:300,
    height:40,
    hintText:'UserLogin',
    keyboardType:Titanium.UI.KEYBOARD_DEFAULT,
    returnKeyType:Titanium.UI.RETURNKEY_DEFAULT,
    borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED
});
win.add(UserLogin);

var UserPassword = Titanium.UI.createTextField({
    color:'#336699',
    top:60,
    left:10,
    width:300,
    height:40,
    hintText:'UserPassword',
    passwordMask:true,
    keyboardType:Titanium.UI.KEYBOARD_DEFAULT,
    returnKeyType:Titanium.UI.RETURNKEY_DEFAULT,
    borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED
});
win.add(UserPassword);

var loginBtn = Titanium.UI.createButton({
    title:'Login',
    top:110,
    width:90,
    height:35,
    borderRadius:1,
    font:{fontFamily:'Arial',fontWeight:'bold',fontSize:14}
});
win.add(loginBtn);

/*
* Login Event Handling
*/
var loginReq = Titanium.Network.createHTTPClient();
var data, User, UserName, UserEmail, UserFirstName, UserLastName, UserAvatar, BioGraphyNative,BioGraphyEnglish,UserPhone,CreatedOn;
loginReq.onload = function() {
    var json = this.responseText;
    var response = JSON.parse(json);
    var message = response.message;
    var code    = response.code;

    if (response.data == null) {
        alert("Message " + message + "code " + code);
    } else {
        var win1 = Titanium.UI.createWindow();
        win1.open();

        User               = response.data.User;
        UserName           = User.UserLogin;
        UserEmail          = User.UserEmail;
        UserFirstName      = User.UserFirstName;
        UserLastName       = User.UserLastName;
        UserAvatar         = User.UserAvatar;
        BioGraphyNative    = User.BioGraphyNative;
        BioGraphyEnglish   = User.BioGraphyEnglish;
        UserPhone          = User.UserPhone;
        CreatedOn          = User.CreatedOn;
        alert("UserName " + UserName + "UserEmail " + UserEmail);
    }
};

loginReq.onerror = function() {
    alert("Network error");
};

/*
* Login Button Click Event
*/

loginBtn.addEventListener('click',function(e) {

    if (UserLogin.value !== '' && UserPassword.value !== '') {
        var win1 = Titanium.UI.createWindow();
        loginReq.open("POST", "url");
        var params = {
            UserLogin: UserLogin.value,
            UserPassword: UserPassword.value
        };
        loginReq.send(params);

    } else {
        alert("Username/Password are required");
    }
});

我是钛的新手,我可以帮助我,我会非常感激,并提前感谢万吨。

1 个答案:

答案 0 :(得分:1)

您的窗口对象已创建,但它是空的并且具有透明背景,因此您在屏幕上看不到它。

您可以将onload更改为此:

loginReq.onload = function() {
    var json = this.responseText;
    var response = JSON.parse(json);
    var message = response.message;
    var code    = response.code;

    if (response.data == null) {
        alert("Message " + message + "code " + code);
    } else {
        var win1 = Titanium.UI.createWindow({
            backgroundColor: 'white',
            layout: 'vertical',
        });

        var User = response.data.User;
        for (var i in User) {
            win1.add(Ti.UI.createLabel({ text: User[i] });
        }
        win1.open();
    }
};

另请注意JavaScript问题,例如在没有var语句的情况下声明变量。始终使用并尝试将所有声明放在函数的开头。为了保持监控,安装JSHint或JSLint并在每次保存时检查代码都很好。