gpt4 book ai didi

javascript - 一旦第一个函数在第一个函数内调用了第二个函数,我将如何将变量的引用传递给第二个函数?

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

在change_text()函数中,我试图向它传递xmhttp.responsetext变量..但是我将如何做到这一点?我还没有看到如何通过它的方法吗?

<script type="text/javascript">
function ajax(url, func) {
this.url = url;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 2 && xmlhttp.status == 200) {
this.func = func;
}
}
xmlhttp.open();
xmlhttp.send()
}

function change_text() {
target = document.getElementById("x");
target.innerHTML = xmlhttp.responseText;
}

ajax("url.php", change_text);
</script>

最佳答案

实际上,要执行此操作,您根本不想使用 this,因为您没有创建对象的任何实例,并且它的行为不像构造函数。

您可以:

function ajax(url, func) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// note: loaded is 4 ^
func(xmlhttp.responseText);
}
}
xmlhttp.open('GET', url, true);
// ^~~ you also forgot to pass parameters here
xmlhttp.send('');
}

这将使ajax功能正常工作。

对于您的 change_text 函数,它与 ajax 不在同一函数中,因此它无法访问 xmlhttp 变量。但是,ajax 函数将responseText 传递给它,因此只需让您的函数接收它即可:

function change_text(responseText) {
var target = document.getElementById("x");
// ^~~ don't forget to declare local variables with `var`.
target.innerHTML = responseText;
}

有关工作示例,请参阅 jsFiddle .

关于javascript - 一旦第一个函数在第一个函数内调用了第二个函数,我将如何将变量的引用传递给第二个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5929063/

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