Php 数据返回为";“未定义”;钛合金

Php 数据返回为";“未定义”;钛合金,php,mysql,xampp,titanium-mobile,Php,Mysql,Xampp,Titanium Mobile,我正在为iPhone开发一个基本的身份验证移动应用程序,使用: 钛v。3.23 XAMPP作为我的本地服务器和PHP MySQL作为本地数据库 我正在使用的应用程序基于以下教程: 我能够从教程中获取并运行代码,没有问题,该应用程序允许我将用户名/密码密钥发布到本地数据库,使用该密钥登录,并在主窗口中显示信息 我开始操作代码以反映我试图构建的更多内容,一个基于窗口的应用程序(不像教程中那样基于选项卡),允许我创建用户名/密码密钥,登录到主窗口,并在主窗口上显示我的信息 我已经成功地修改了代码,允

我正在为iPhone开发一个基本的身份验证移动应用程序,使用:

钛v。3.23

XAMPP作为我的本地服务器和PHP

MySQL作为本地数据库

我正在使用的应用程序基于以下教程:

我能够从教程中获取并运行代码,没有问题,该应用程序允许我将用户名/密码密钥发布到本地数据库,使用该密钥登录,并在主窗口中显示信息

我开始操作代码以反映我试图构建的更多内容,一个基于窗口的应用程序(不像教程中那样基于选项卡),允许我创建用户名/密码密钥,登录到主窗口,并在主窗口上显示我的信息

我已经成功地修改了代码,允许我在本地数据库中创建新的用户名/密码,并让应用程序在登录时验证用户名/密码是否匹配。然而,当我登录到我的主屏幕时,它显示我的用户名和密码是“未定义的”。为了检查错误,我在当前持有工作代码的项目中输入了相同的user/pass,并且它是可见的。所以我知道我现在的PHP和数据库都正常工作

目前,我的app.js是:

setTimeout (function() {

var login;
login = require ('login');
login.LogIn();

var mainWin = Titanium.UI.createWindow();

Ti.App.addEventListener('grantEntrance', function(event){

mainWin.title = 'Welcome ' + event.name;
mainWin.url = 'main.js';
mainWin.name = event.name;
mainWin.email = event.email;

});

}, 2000);
setTimeout函数最终将成为一个启动屏幕,我独立于上面的教程添加了它。我还更改了“main”项以反映我的mainWin,而不是教程中指出的“main”

目前,我的login.js是:

function LogIn(){

var loginWin = Ti.UI.createWindow({
    backgroundColor:'white'
});

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

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

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

var createLabel = Titanium.UI.createLabel({
text:'Create Profile',
bottom: 25,
left:25
});
loginWin.add(createLabel);

var indicatorWin = Ti.UI.createView({
width: 320,
height: 480,
backgroundColor: '#000000',
opacity: 0.5
});

var acctInd = Ti.UI.createActivityIndicator({
height:50,
width:50,
style: Titanium.UI.createActivityIndicatorStyle.Plain,
top:250,
left:130
});

var actLabel = Titanium.UI.createLabel({
text: 'Checking Login Details',
color: '#FFFFFF',
left:70,
top:200,
height:50

});

indicatorWin.hide();
acctInd.hide();
actLabel.hide():

loginWin.add(indicatorWin);
indicatorWin.add(acctInd);
indicatorWin.add(actLabel);

var loginReq = Titanium.Network.createHTTPClient();

loginReq.onload = function()
{
var json = this.responseText;

var response = JSON.parse(json);

if (response.logged == true)

{
    username.blur();
    password.blur(); 

    Ti.App.fireEvent('grantEntrance', {
        name:response.name,
        email:response.email
    });
    loginWin.close();
        var main;
        main = require ('main');
        main.MainM();
}
else
{
    alert(response.message);
}
};

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

{  
if (username.value != '' && password.value != '')

{

    loginReq.open("POST","http://localhost/Tuts/post_auth.php");

    var params = {
        username: username.value,
        password: Ti.Utils.md5HexDigest(password.value)
    };

    loginReq.send(params);

    indicatorWin.show();
    acctInd.show();
    actLabel.show();
}  
else
{
    alert("Username/Password are required");
}
});

createLabel.addEventListener('click', function(e) {
var ProfileWin, ProfileInc;
ProfileInc = require ('createProfile');
ProfileWin = new ProfileInc.CreateP();
ProfileWin.open();
});

loginWin.open();
return ;loginWin;
}
exports.LogIn=LogIn;
目前,我的main.js是:

function MainM(){

var mainWin = Ti.UI.createWindow({
backgroundColor:'white'
});

var msg = Titanium.UI.createLabel({
text:"\n\nYour email is:\n" + mainWin.email + "\n\nyour name is:\n" + mainWin.name,
top:10,
left:10,
width:300,
height:'auto'
});
mainWin.add(msg);

mainWin.open();
return ;mainWin;
}
exports.MainM=MainM;
正如你所看到的,我对应用程序的实际数据库部分没有太大的改变。这就是为什么我对它不起作用感到困惑。我发现的唯一一项研究表明,异步请求可能存在问题,并且听说通过使用setTimeout函数,我可能能够绕过错误。我尝试在一些地方插入函数,但是错误仍然存在

对不起,这么久了,我已经为此工作了一个月,我希望尽可能详细


谢谢你的帮助

在代码中,主屏幕是一个新窗口,无法访问变量email和name


要获取min win中的值,您可以将其保存并使用,或者修改main.js。

谢谢!这很有道理。如果我想修改main.js,是否需要编写一个全新的PHP文件来获取信息?或者我可以使用我目前拥有的相同文件来调用它并修改钛代码吗?您可以只修改钛代码,使用属性保存电子邮件和名称,并在main.js中获取它们。执行类似于
tianium.App.Properties.setString(“name”,response.name)的操作
在你的login.js中,并在main.js
Titanium.App.Properties.getString(“name”)获取它们