2013-12-19 131 views
4

我想打开新窗口中的json响应,我尝试了很多,但没有得到ant成功,如果有人能帮助我,将不胜感激。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

您的窗口对象被创建,但它是空的,并具有透明背景,所以你不会在屏幕上看到它。

你可以改变你的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,并在每次保存时检查您的代码。

+0

感谢兄弟,它的工作现在我明白我在哪里会犯错误。 –