梅川酷芷 2018-07-27 12:43 采纳率: 50%
浏览 954
已采纳

哪位大哥能帮我写个原生的 JS getJSON

哪位大哥能帮我写个原生的 JS getJSON,在此感谢了。
不是异步请求,
请求地址:get2.php?uuid=sssssss
失败返回的JSON

{"error_code": 0, "reason": "success", "resultcode": 200, "qr_code": null}
点击按钮后执行一秒轮询一次get2.php?uuid=sssssss
每轮询一次,按钮上的标题显示次数。
轮询35秒后qr_code还是null,就让用户点击刷新页面。
直到qr_code 栏里是URL 地址。然后执行第二次 请求,请求地址:get5555.php?url=把刚取出qr_code的值。然后得到get5555.php返回的值,弹窗显示

现有实现一次请求的源码。我需要实现两次不同请求地址

 <input type="button" id="but" value="开始" onclick="run(1);" />
<script type="text/javascript">
function run(n) {
    var xhr = new XMLHttpRequest();
    xhr.open('get','get2.php?uuid=sssssss&time='+new Date().getTime());
    xhr.onreadystatechange = function () {
        if (xhr.readyState==4 &&xhr.status==200) {
            document.getElementById("but").value = n;
            var data = JSON.parse(xhr.responseText);
            if (data.qr_code!=null) {
                location.href = data.qr_code;
            } else if (n<35) {
                setTimeout(function(){
                    run(n+1);
                }, 1000);
            } else {
                alert("刷新页面");
                location.reload();
            }
        }
    }
    xhr.send();
}
</script>
  • 写回答

1条回答 默认 最新

  • 天际的海浪 2018-07-27 13:37
    关注
    <input type="button" id="but" value="开始" onclick="run(1);" />
    <script type="text/javascript">
    
    function getAjax(url,callback) {
        var xhr = new XMLHttpRequest();
        xhr.open('get',url+(url.indexOf("?")==-1?"?":"&")+'time='+new Date().getTime());
        xhr.onreadystatechange = function () {
            if (xhr.readyState==4 &&xhr.status==200) {
                callback(xhr.responseText);
            }
        }
        xhr.send();
    }
    
    function run(n) {
        getAjax("get2.php?uuid=sssssss",function (data) {
            document.getElementById("but").value = n;
            data = JSON.parse(data);
            if (data.qr_code!=null) {
                getAjax("get5555.php?url="+encodeURIComponent(data.qr_code),function (data) {
                    alert(data);
                });
            } else if (n<35) {
                setTimeout(function(){
                    run(n+1);
                }, 1000);
            } else {
                alert("刷新页面");
                location.reload();
            }
        });
    }
    </script>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 qt中connect两个signal
  • ¥20 pix2pixHD运行测试命令时出现数据类型错误无法反向传播的问题
  • ¥15 python处理Excel符合条件的行自动填写数据分类
  • ¥15 汇编hook举例并讲解(通俗易懂,学习用)
  • ¥20 用c++语言模拟键盘电子琴设计
  • ¥15 STM32cubemx生成keil工程,有问题与正常的情况不同,求解!
  • ¥15 如何自动点击银行app的安全键盘,实现密码自动输入
  • ¥15 关于四边形重叠的问题
  • ¥15 用verilog语言设计一个简易的八音符电子琴,可通过按键输入来控制音响。演奏时可以选择是手演奏(由键盘输入)或自动演奏已存入的乐曲。能够自动演奏多首乐曲,且每首乐曲可重复演奏
  • ¥15 sap gui脚本每次到导出Excel的时候就停住不动。不会另存为。