当前位置: 移动技术网 > IT编程>脚本编程>Ajax > 【知道/智慧树】网课刷题·最终版本

【知道/智慧树】网课刷题·最终版本

2020年07月11日  | 移动技术网IT编程  | 我要评论

因为学校开了一堆网课,而且都是美术体育之类的没什么用处,所以一直再找快捷的刷题方法,以前写过获取题目后使用微信搜题,但是还需要复制粘贴,今天找到了一个可以在线搜题的网站,让大佬封装了一下写了个脚本

封装接口的大佬->@高厉害

使用方法,按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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网