【知道/智慧树】网课刷题·最终版本
程序员文章站
2022-03-07 13:42:48
因为学校开了一堆网课,而且都是美术体育之类的没什么用处,所以一直再找快捷的刷题方法,以前写过获取题目后使用微信搜题,但是还需要复制粘贴,今天找到了一个可以在线搜题的网站,让大佬封装了一下写了个脚本封装接口的大佬->@高厉害使用方法,按F12打开控制台粘贴代码即可获取答案function getquestion(question) {$.ajax({type: 'post',url: 'https://gaolihai.top/query',data: {type: 2,pwd: 'diany',...
因为学校开了一堆网课,而且都是美术体育之类的没什么用处,所以一直再找快捷的刷题方法,以前写过获取题目后使用微信搜题,但是还需要复制粘贴,今天找到了一个可以在线搜题的网站,让大佬封装了一下写了个脚本
封装接口的大佬->@高厉害
使用方法,按F12打开控制台粘贴代码即可获取答案
function getquestion(question,index){$.ajax({type:'post',async:false,url:'https://gaolihai.top/query',data:{type:2,pwd:'diany',question},success:(res)=>{console.log(index,res)},error:(xhr)=>{console.log('发生错误')}})}
var a=document.querySelectorAll('.subject_describe p');a.forEach((currentValue,index,arr)=>{getquestion(currentValue.innerText,index+1)});
为了使Ajax返回的题目是有序的,使用了jQuery的Ajax自带同步请求参数,但是这种同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行
对于题少的卷子来说没什么,题多了无法操控浏览器就只能干等,下面是回调大佬封装的Promise方法,可以实现顺序获取的同时,不锁住浏览器
function ajaxAsync(options) {
return new Promise((resolve, reject) => {
let { success, error } = options;
delete options['success'], options['error'];
$.ajax(options)
.done(function (res) {
success && success(res)
resolve(res);
}).fail(function (xhr) {
error && error(xhr);
resolve(xhr.responseJSON.message);
});
});
}
async function getQuestion(question, index) {
return await ajaxAsync({
type: 'post',
url: 'https://gaolihai.top/query',
data: {
type: 2, pwd: 'diany', question
},
success: (res) => {
console.log(index, res)
},
error: (xhr) => {
try {
console.log('发生错误:' + xhr.responseJSON.message)
} catch (error) {
console.log('发生错误:' + xhr.responseText)
}
}
});
}
var a = document.querySelectorAll('.subject_describe p');
(async() => {
for (let i=0;i<a.length;++i) {
await getQuestion(a[i].innerText, i+1);
}
})()
本文地址:https://blog.csdn.net/qq_43915356/article/details/107268252
下一篇: 前端开发Ajax常见问题总结