gpt4 book ai didi

javascript - 对象存储函数的问题

转载 作者:行者123 更新时间:2023-12-03 07:36:40 24 4
gpt4 key购买 nike

因此,我创建了一个函数,它创建一个新的 xmlhttprequest 并采用一个对象,该对象包含构造一个对象所需的所有信息作为参数。一切都工作正常,直到我告诉它当请求通过对象完成时要做什么(该函数的默认值完美工作。),出于某种原因,它给了我一个错误“Uncaught ReferenceError:x未定义”

window._={
xhr: function(a){
if(typeof a.method==="undefined"||a.adress==="undefined"){
console.log("Well, That's not going to work...");
}
var x=new XMLHttpRequest();
x.open(a.method,a.adress,a.asyn);
if(typeof a.headers!== "undefined"){
Object.keys(a.headers).forEach(function (key) {
x.setRequestHeader(key,a.headers[key]);
});
}
if(typeof a.ready==="undefined"){
a.ready=function(){console.log(x.responseText);}
}
x.send();
x.onreadystatechange = function(){
if(x.readyState==4&&x.status==200){
a.ready();
}
}
}
}
window.onload = alert(_.xhr({method:"get",adress:"../php/include/functions.php?function=id_from_username&arg=kiddo",asyn:true,headers:{},ready:function(){console.log(x.responseText);}}));

(指定的 url 是我服务器上的一个 php 文件,当给定 GET header ?function=samplefunc&arg1=foo&arg2=bar 以及可选的函数需要的多个参数时,该文件可以执行文件中的函数。在本例中,我告诉它查找名为“kiddo”的用户并将其 ID 返回到我的脚本。)

最佳答案

问题是您正在从 xhr 函数的作用域外部访问在 xhr 函数内部定义的变量 x。

解决方案是使用 xhr 函数内部的响应文本调用 Ready 函数

window._={
xhr: function(a){
if(typeof a.method==="undefined"||a.adress==="undefined"){
console.log("Well, That's not going to work...");
}
var x=new XMLHttpRequest();
x.open(a.method,a.adress,a.asyn);
if(typeof a.headers!== "undefined"){
Object.keys(a.headers).forEach(function (key) {
x.setRequestHeader(key,a.headers[key]);
});
}
if(typeof a.ready==="undefined"){
a.ready=function(){console.log(x.responseText);}
}
x.send();
x.onreadystatechange = function(){
if(x.readyState==4&&x.status==200){
a.ready(x.responseText);
}
}
}
}

window.onload = alert(_.xhr({method:"get",adress:"",asyn:true,headers:{},ready:function(responsText){console.log(responsText);}}));

关于javascript - 对象存储函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35583374/

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