gpt4 book ai didi

javascript - AJAX返回值的问题

转载 作者:行者123 更新时间:2023-12-02 17:27:45 24 4
gpt4 key购买 nike

我正在使用一个 javascript 函数来调用另一个 javascript 函数 (zConvertEmplidtoRowid),该函数使用 ajax 调用来运行查询以返回变量 (rowid) 中的数据。我的问题是我不知道如何将数据返回到原始函数。

这是调用 ajax 函数 (zConvertEmplidtoRowid) 的原始函数的片段

var rowid = zConvertEmplidtoRowid(emplid);
//the alert should show what the query via ajax returned
alert(rowid);
zEmployeePortrait(emplid, ajaxlink);
}

这是ajax函数...我想在这里的某个地方我需要放置返回值,但我以前从未使用过ajax,所以我不确定。

function zConvertEmplidtoRowid(emplid, ajaxlink, callback) {

if (typeof XMLHttpRequest == 'undefined') {
XMLHttpRequest = function() {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}

throw new Error('This browser does not support XMLHttpRequest or XMLHTTP.');
};
}
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var rowid = request.responseText;
callback(rowid);
}
}

var ajax_link = ajax_link + "?emplid=" + emplid;
request.open('GET', ajax_link);
request.send();
}

最佳答案

正如 @epascarello 指出的,ajax 调用是异步的,您编写的代码期望该调用以同步方式返回。

您有两个选择:

1)使ajax调用同步(我强烈建议不要采取这条路线)。

2) 将回调函数作为参数传递给进行 ajax 调用的函数,然后在调用返回后调用回调函数。

例如:

function zConvertEmplidtoRowid(emplid, ajaxlink, callback) { //Added a callback function parameter

if (typeof XMLHttpRequest == 'undefined') {
XMLHttpRequest = function() {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}

throw new Error('This browser does not support XMLHttpRequest or XMLHTTP.');
};
}
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var rowid = request.responseText;
//now you invoke the callback passing the rowid as argument
callback(rowid);
}
}

var ajax_link = ajax_link + "?emplid=" + emplid;
request.open('GET', ajax_link);
request.send();
}

zConvertEmplidtoRowid(emplid, ajaxlink, function(rowId) {
alert(rowId);
zEmployeePortrait(emplid, ajaxlink);
});

关于javascript - AJAX返回值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23371144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com