【问题标题】:Unable to pass return value of a XMLHttpRequest to a variable [duplicate]无法将 XMLHttpRequest 的返回值传递给变量 [重复]
【发布时间】:2020-12-05 18:12:56
【问题描述】:

我无法将 XMLHttpRequest(在小型 csv 文件中搜索字符串并以所需语言返回其值)的返回值分配给变量。它总是说字符串是未定义的。

我什至添加了延迟,让 XMLHttpRequest 有时间读取 csv 文件(顺便说一句,这只是几行)但无济于事。

请有任何建议!我被困住了!

function DisplayItemInCorrectLanguage()
{
        var str = GetLocalizedTerm ("CBRAND", Language);
        console.log('str: ', str); //Does not work. Error: 'str:  undefined'
}

function GetLocalizedTerm (itemname, language)
{
    var itn = itemname;
    var lng = language;

    var oReq = new XMLHttpRequest(); 
    oReq.onload = function()
    {
        //console.log("String is: ", this.responseText); //log is correct: 'String is:  CAR BRAND'
        //return this.responseText; //Does not return any value to DisplayItemInCorrectLanguage()
    };
    oReq.open("get", "GetLocalizedTermFromDictionary.php?itemname=" + itn + "&LANG=" + lng, true);
    oReq.send();
}

【问题讨论】:

    标签: javascript php xmlhttprequest


    【解决方案1】:

    这应该可行。

    function GetLocalizedTerm (itemName, language){
     return new Promise((resolve, reject) => {
             var oReq = new XMLHttpRequest();
           oReq.open("get", "GetLocalizedTermFromDictionary.php?itemname=" + itemName + "&LANG=" + language, true);
       
            oReq.onload = () => {
                if (oReq.status >= 200 && oReq.status < 300) {
                    resolve(oReq.response);
                } else {
                    reject(oReq.statusText);
                }
            };
            oReq.onerror = () => reject(oReq.statusText);
            oReq.send();
        });
    }
    
    async function DisplayItemInCorrectLanguage()
    {
            const language='en'
            var str = await GetLocalizedTerm ("CBRAND", language);
            console.log('str: ', str); 
    }
    

    【讨论】:

    • 而不是 oReq.onload?
    • 是的。 onload 在这里没有意义。
    • onload 在这里非常有意义,它是一种在加载数据时触发函数的更简单的方法。切换到 onreadystatechange 并添加对 readyState 和 status 的检查会为更多代码块提供相同的效果......并且根本没有解决问题。
    • 我的错。你是对的..
    • 尝试新代码..应该可以工作
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2012-11-15
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    相关资源
    最近更新 更多