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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

德瑪西亞99 2022-09-29 17:33:00
我正在嘗試創(chuàng)建一個(gè)函數(shù),該函數(shù)將通過(guò) XMLHTTP 請(qǐng)求調(diào)用某個(gè) PHP 文件 (),并將其值返回到此函數(shù)。mineTime.php目前我遇到了麻煩,因?yàn)樗黄鹱饔?,要么它什么都不返回,要么返回未定義或空值,我不知道該怎么辦。我認(rèn)為這可能與 onload 事件有關(guān)。我的時(shí)間.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貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

這是新程序員面臨的常見(jiàn)問(wèn)題,尤其是在處理 AJAX 調(diào)用時(shí)。即使是更有經(jīng)驗(yàn)的程序員也很難掌握AJAX功能。重要的是要記住 AJAX 中的 A 代表什么,即異步。這意味著主程序?qū)⒗^續(xù)運(yùn)行,而另一個(gè)側(cè)程序?qū)⑼瓿善渌恍┤蝿?wù),通常稱(chēng)為線程。在此實(shí)例中,您嘗試通過(guò)從該異步調(diào)用中獲取值來(lái)返回。因?yàn)樵?AJAX 調(diào)用在與主程序不同的線程上運(yùn)行,因此 將始終為 null。miningTimeminingTime


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


它應(yīng)該如何構(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) 

}

請(qǐng)注意,在 Javascript 中,還有其他可能的方法來(lái)處理這個(gè)問(wèn)題。有些東西被稱(chēng)為以及。在我看來(lái),這是最簡(jiǎn)單,最普通的方法。Promisesasync/await


更新:由于您不能使用具有時(shí)間參數(shù)的函數(shù),因此您可以改為傳遞對(duì)該函數(shù)的引用。引用函數(shù)有點(diǎn)像復(fù)制函數(shù)并將其粘貼到其他位置,而調(diào)用函數(shù)實(shí)際上運(yùn)行它。您可以通過(guò)括號(hào)來(lái)辨別兩者。如果在函數(shù)名稱(chēng)后添加左括號(hào)和右括號(hào),它將調(diào)用該函數(shù),如果省略它們,則該函數(shù)將僅被引用。


查看完整回答
反對(duì) 回復(fù) 2022-09-29
?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

正如@EricBrown中提到的,另一種方法是使用承諾(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*


查看完整回答
反對(duì) 回復(fù) 2022-09-29
  • 2 回答
  • 0 關(guān)注
  • 64 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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