Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问javascript全局变量失败_Javascript_Jquery_Jquery Mobile - Fatal编程技术网

访问javascript全局变量失败

访问javascript全局变量失败,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我正在用jquery mobile和phonegap/cordova开发我的第一个移动应用程序。在我自己创建页面之前,一切都很顺利,但只要我想访问从远程服务器访问的一些变量,它就会在特定位置失败。我已经尝试了大约30种变体,重新编写了相同的代码——实际上,我已经花了4个小时输出了一个简单的变量——但没有成功,我现在只是把剩下的头发拔了出来 这是我的密码剪 我在服务器端有一个html文件、一个js文件和一个php,输出一个json答案 我得到的回应是: {"item":{"ID":"1","fna

我正在用jquery mobile和phonegap/cordova开发我的第一个移动应用程序。在我自己创建页面之前,一切都很顺利,但只要我想访问从远程服务器访问的一些变量,它就会在特定位置失败。我已经尝试了大约30种变体,重新编写了相同的代码——实际上,我已经花了4个小时输出了一个简单的变量——但没有成功,我现在只是把剩下的头发拔了出来

这是我的密码剪

我在服务器端有一个html文件、一个js文件和一个php,输出一个json答案

我得到的回应是:

{"item":{"ID":"1","fname":"Kris","lname":"Nagy","email":"myemail@email.com","password":"abc123","role":"1","practice":"0","address":"","city":"","zip":"","phone":""}}
login.js

var userName;
function getUser() {
 $.getJSON( "http://myserver.com/getuser.php?email=myemail@email.com&pass=absc123", function( json ) {
 console.log( "JSON Data: " + json.item.fname );
 console.log( "JSON Data: " + json.item.email );
 // testing if i have the correct data, console outputs the rigth values

 userName =  = json.item.fname;
 window.userName = json.item.fname;
 //trying to assign value to variable

 console.log( "Variable data" + window.userName );
 // testing if i have the correct data stored, console outputs the right value
  });
 }
 getUser();  
 console.log( "test outside function" + window.userName );
 //gives back undefined
html(这里我只是想访问变量,确保我有完整的html,包括js、jquery和所有必需的内容)


getUser()//将值输出到控制台
log(“在html中测试”+window.userName)/*/返回未定义的
由于我需要在html中使用一些变量,如何实现在html中输出它们。这个例子试图进行某种登录,但我的问题更多的是关于变量,因为我想了解它们。据我所知,我有全局变量和窗口。打电话,但似乎一切都是全球性的,我需要在整个应用程序中处理变量,所以我理解它们是至关重要的。虽然正如你所看到的,我似乎忽略了一点,所以任何帮助都是非常感谢的。
我知道如何使用php,但由于最终产品需要在cordova上运行,我在客户端仅限于html/js,javascript还不是我的强项。

您无法在JSON成功回调之外访问
用户名
,因为您仅在异步方法的成功回调中分配值

console.log( "test outside function" + window.userName ); // it wont work

如果仍要立即访问,请通过设置ajax设置之一进行同步调用
async:false
,但ajax的总体目标已丢失

您可以从函数返回ajax请求公开的promise接口:

var userName;

function getUser() {
    return $.getJSON(...);
}
getUser().done(function () {
    console.log("test outside function" + window.userName);
});

这就是默认情况下ajax异步工作的方式。请阅读:谢谢你的链接。然而,这并不能解决我的实际问题,我有几个变量,我必须立即访问。调用服务器获取用户详细信息,然后随时访问的解决方案是什么?e、 g在我的应用程序中,我想让侧面板滑出用户名等。有没有任何方式输出变量,如getUser(userName)等?这就是我想要找到的grail,但不知道如何实际实现这种代码。抱歉,如果我的问题不够简单。但是您无法“立即”访问它,只有在请求设置了值之后。抱歉,在我完成之前按enter键发送了我的上一条评论,我还不熟悉stackoverflow:)您必须在
$.getJSON()的成功回调中使用
窗口.userName
设置所有逻辑
方法。当然,您可以在此回调中使用此值调用任何函数。仅供参考,您可以重新设计代码以使用promise接口(使其更具可读性)作为:
var userName;函数getUser(){return$.getJSON(…);}getUser().done(函数(){console.log(“函数外测试”+window.userName);})现在,您的所有逻辑都可以进入
.done()
回调中
var userName;

function getUser() {
    return $.getJSON(...);
}
getUser().done(function () {
    console.log("test outside function" + window.userName);
});