我正在通过xmlHttpRequest加载一个页面,并且我没有得到一个在页面加载完成几毫秒后存在的变量 所以问题是当xmlHttpRequest发回响应时我没有得到它的变量。 我希望它在onload之后回复。
var xhr = new XMLHttpRequest();
xhr.open("GET", event.url, true);
xhr.onload = function() {
callback(xhr.responseText);
};
xhr.onerror = function() { callback(); };
xhr.followRedirects = true;
xhr.send();
我尝试了setTimeOut但没有用,因为可能在那时调用已经完成
xhr.onload = function() {
console.log('wait for response');
setTimeout(function(){
callback(xhr.responseText);
},2000);
};
我尝试过readyStateChange,但没有成功
xhr.onreadystatechange = function () {
if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
console.log(xhr.responseText);
callback(xhr.responseText);
};
};
顺便说一句,我正在尝试加载amazon signIn页面
并且每次丢失的变量都是隐藏的输入字段metadata1,
我在响应文本中获得所有其他隐藏的输入字段,输入字段除外,名为“metadat1”
如果有人能提供帮助,我会非常开心。 提前致谢
答案 0 :(得分:0)
abc(xhr.responseText);
function abc(xhrRes){
var dynamicElement = document.createElement('div');
dynamicElement.setAttribute("id", "xhrdiv");
dynamicElement.setAttribute("style", "display: none;");
dynamicElement.innerHTML = xhrRes;
document.body.appendChild(dynamicElement);
var scr = document.getElementById('xhrdiv').getElementsByTagName("script");
//5 scripts needed to generate the variable
for(i=0;i<5;i++){
eval(scr[i].innerHTML);
if( i+1 == 5){
var response = document.getElementById('xhrdiv').innerHTML;
return response; //and in this response variable I have every thing I needed from that page which I called through xmlhttp Req
}
}
}
---------------------改进版本----------------------- < / p>
而不是通过eval执行脚本, 将脚本内容保存在文件中并将其包含在内,因为我们通常会包含更好用的脚本。
xhrRes = xhr.responseText;
var dynamicElement = document.createElement('div');
dynamicElement.setAttribute("id", "xhrDiv");
dynamicElement.setAttribute("style", "display: none;");
dynamicElement.innerHTML = xhrRes;
document.body.appendChild(dynamicElement);
var xhrDiv = document.getElementById('xhrDiv');
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = JSfile;
xhrDiv.appendChild(newScript);
(它显示编辑完成了我的匿名用户,:(因为我在编辑时忘了登录)
答案 1 :(得分:-1)
如果数据在页面加载后的某个时间内不存在,那么可能是由JavaScript生成的。
如果您使用XMLHttpRequest请求URL,那么您将在响应中获得该页面的源代码。在JavaScript操作后,您将无法获得生成的DOM。
您需要阅读您请求的页面上的JavaScript,了解它是如何生成您想要读取的数据,然后使用您自己的代码复制它的作用。