第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 PHP 獲取值到 Javascript - 將 AJAX 值返回到函數(shù)

從 PHP 獲取值到 Javascript - 將 AJAX 值返回到函數(shù)

PHP
米琪卡哇伊 2023-05-26 16:02:17
mineTime.php我正在嘗試創(chuàng)建一個函數(shù),該函數(shù)將通過XMLHTTPRequest調(diào)用某個 PHP 文件 ( )并將其值返回給該函數(shù)。目前我遇到了麻煩,因為它不工作,要么什么都不返回,要么返回 undefined 或 null,我不知道該怎么做。我認(rèn)為這可能與 onload 事件有關(guān)。mineTime.php<?php$miningTime = 3600;echo json_encode($miningTime);?>小黃人.jsfunction GetTime() {  var miningTime = null;  var xhr = new XMLHttpRequest();  xhr.onload = function() {    miningTime = this.responseText;  }  xhr.open("GET", "../php/mineTime.php", true);  xhr.send();  return miningTime;}window.onload = function () {    var timeToMine = parseInt(GetTime());    console.log(timeToMine); // outputs: NaN    var display = document.querySelector('#time'),        timer = new CountDownTimer(timeToMine),        timeObj = CountDownTimer.parse(timeToMine);        ...*code continues*提前致謝!
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經(jīng)驗 獲得超3個贊

這是新程序員面臨的一個常見問題,尤其是在處理 AJAX 調(diào)用時。即使是更有經(jīng)驗的程序員也很難掌握 AJAX 功能。重要的是要記住 AJAX 中的 A 代表什么,異步。這意味著主程序?qū)⒗^續(xù)運行,而另一個副程序?qū)⒐ぷ饕酝瓿梢恍┢渌蝿?wù),通常稱為線程。在這種情況下,您試圖miningTime通過從該異步調(diào)用中獲取值來返回。因為該 AJAX 調(diào)用在與主程序不同的線程上運行,miningTime所以始終為空。


為了正確實現(xiàn)這一點,您需要實現(xiàn)所謂的回調(diào)函數(shù)?;卣{(diào)函數(shù)是在異步程序完成其正在執(zhí)行的操作時運行的函數(shù)。


這是它的結(jié)構(gòu):


    function GetTime(callback) {

      var xhr = new XMLHttpRequest();

      xhr.onload = callback


      xhr.open("GET", "../php/mineTime.php", true);

      xhr.send();

    }


    function callbackFunction() {

      var timeToMine = parseInt(this.responseText);

      console.log(timeToMine); // outputs: NaN

      var display = document.querySelector('#time'),

      timer = new CountDownTimer(timeToMine),

      timeObj = CountDownTimer.parse(timeToMine);

            ...*code continues*

}


    window.onload = function () {

        var callback = callbackFunction

        GetTime(callback) 

}

請注意,在 Javascript 中,還有其他可能的處理方式。有些東西叫做Promisesas well as async/await。在我看來,這是最簡單、最普通的方法。


更新:因為你不能有一個帶有時間參數(shù)的函數(shù),你可以做的是傳遞一個對該函數(shù)的引用。引用函數(shù)有點像復(fù)制函數(shù)并將其粘貼到其他地方,而調(diào)用函數(shù)實際上是在運行它。您可以通過括號辨別兩者。如果在函數(shù)名后加上左括號和右括號,則調(diào)用該函數(shù),如果省略,則僅引用該函數(shù)。


查看完整回答
反對 回復(fù) 2023-05-26
?
哆啦的時光機

TA貢獻1779條經(jīng)驗 獲得超6個贊

另一種方法是使用 Promise(IE 不支持)

function GetTime() {


? ? return new Promise( (resolve, reject) => {


? ? ? ? var miningTime = null;

? ? ? ? var xhr = new XMLHttpRequest();

? ? ? ? xhr.onload = function() {

? ? ? ? ? ? resolve(this.responseText);

? ? ? ? }


? ? ? ? xhr.open("GET", "../php/mineTime.php", true);

? ? ? ? xhr.send();


? ? })

}


window.onload = async function () {

? ? const data = await GetTime();

? ? var timeToMine = parseInt(data);

? ? console.log(timeToMine); // outputs: NaN

? ? var display = document.querySelector('#time'),

? ? ? ? timer = new CountDownTimer(timeToMine),

? ? ? ? timeObj = CountDownTimer.parse(timeToMine);

? ? ? ? ...*code continues*


查看完整回答
反對 回復(fù) 2023-05-26
  • 2 回答
  • 0 關(guān)注
  • 201 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號