簡體   English   中英

javascript全局變量訪問失敗

[英]Access of javascript global variable fails

我正在用jquery mobile和phonegap / cordova做我的第一個移動應用程序。 一切順利,直到我自己創建頁面為止,但是一旦我要訪問從遠程服務器訪問的某些變量,它就會在特定位置失敗。 我已經嘗試了大約30種變體,再次重新編寫相同的代碼-實際上已經花了4個小時來輸出一個簡單的var-,但是沒有成功,現在我只是把剩下的頭發拔了出來。

這是我的代碼片段

我在服務器端有一個html文件,一個js文件和一個php,輸出一個json答案

我得到的PHP響應:

{"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

index.html(這里我只是嘗試訪問變量,確保我有完整的html,包括js,jquery和所有必需品)

 <script>
 getUser(); //outputs the values to console
 console.log( "test in html" + window.userName ); /*/gives back undefined
 </script>

由於我需要在html中使用一些變量,因此我如何實現能夠在html中輸出它們。 這個例子試圖進行某種登錄,但是我的問題更像是變量,因為我想了解它們。 以我的理解,我的窗口有全局變量。 調用,但似乎一切都只是全局性的,我需要在整個應用程序中使用變量,因此理解它至關重要。 盡管如您所見,我似乎沒有提出任何要點,所以非常感謝您的幫助。 我知道如何使用php,但是由於最終產品需要在cordova上運行,因此我僅限於客戶端的html / js,而javascript並不是我的強項。

您可以從函數返回由ajax請求公開的promise接口:

var userName;

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

您無法在JSON成功回調之外訪問userName ,因為您僅在異步方法的成功回調中分配了值。

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

如果仍然要立即訪問,請通過將ajax設置async:false之一設置來進行同步調用,但是ajax的總體目標將丟失

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM