我正在尝试使用javascript手动将一些数据导出到excel文件,并使用Tampermonkey将GM.xmlHttpRequest循环。循环发生在不同的时间,并且请求在循环外部使用了一个数字。
我尝试更改为ajax请求,但出现了CORS问题。我已经从一个对象更改为一个数组并移动了循环,还尝试使同步变为true,但没有成功。
var mydata = [];
var loop;
var NewJson;
var changeToExcelData;
var url = "json/DashboardQuestionnaireForm.php";
function changeURL () {
for(loop = 0; loop < 4; loop++){
url = "json/DashboardQuestionnaireForm.php";
console.log("loop inside function = " + loop);
}
}
function HTTPRequest () {
GM.xmlHttpRequest({
method: "GET",
url: url,
context: loop,
headers: {
"Content-Type": "application/json"
},
onload: function(exportData) {
//
changeURL();
console.log("Download excel ajax working . . . loop = " + loop);
NewJson = JSON.parse(exportData.responseText);
console.log("this is newjson "+NewJson[0].results[0].Lecturer);
mydata[loop] = JSON.stringify(NewJson[0].results[0].Lecturer);
console.log(mydata[loop]);
} //end exportData function
}); //end ajax call
} //end function
console.log("starting export . . .");
function downloadData () {
var downloadLink = document.createElement("a");
console.log("mydata = "+mydata);
var blob = new Blob([mydata],{ type: 'text/csv;charset=utf-8;' });
var url2 = URL.createObjectURL(blob);
downloadLink.href = url2;
downloadLink.download = "exportData.csv";
downloadLink.innerHTML = "downloadCSVnew";
document.body.appendChild(downloadLink);
downloadLink.click();
}
HTTPRequest(); downloadData();
因此,我希望循环会首先开始并命中请求,但是相反,它似乎遍历了循环,然后在调用期间插入了“ 5”,这将超出循环范围?我这样做的原因是,我需要从许多不同的网页中获取数据。