如何使用模块在两个文件之间传递json参数

时间:2014-07-21 11:34:14

标签: javascript json

我试图使用require.all调用其他js文件中的函数这些参数

  1. > Login = require(" LoginRequest");

      Create = require("CreateView");
      var params = { username : username.value , password : password.value};
      var type ="POST"; 
      var URL = "<a href="https://localhost/post_auth.php">https://localhost/post_auth.php</a>";
      var Result;  </li>
    
         

  这里是来自LoginScreen.js

的调用函数
b2.addEventListener('click',function(e)
{
    alert(params.username);
    if (username.value != '' && password.value != '')
    {

        Result=Login.Request(params,type,URL);
    }
    else
    {
        // warning alert
        alert("Username/Password are required");
    }


    if (Result.logged == true)
    {
        alert("Welcome " + Result.name + ", Please answer the following question");
        Create();
    }
    else
    {
        alert(Result.message);
    }
});

当我尝试将参数传递给LoginRequest时。

function Request(params,type,url){
        var Result;
        var loginReq = Titanium.Network.createHTTPClient();

        loginReq.open(type,url);

        loginReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        //send parameters
        loginReq.send(JSON.stringify(params));

        loginReq.onload = function()
        {
            var json = this.responseText;
            Result = JSON.parse(json);
            alert (Result.logged);
            alert (Result.name);
        };
    return Result;
  };

exports.Request = Request;

调用return undifiend对象,我的错在哪里?

1 个答案:

答案 0 :(得分:0)

那是因为你正在进行异步通话。

当你调用loginReq.send()时,将进行调用,并且它将继续执行其余的代码而无需等待异步调用完成,这就是函数返回undefined的原因

要解决此问题,您可以进行同步调用而不是异步调用(这是一个糟糕的坏主意),或者您可以重构代码,也许LoginRequest可以返回loginReq实例而不是结果