我有一个流程,在该流程中我创建了一个轮询函数,该函数通过VBScript执行XMLHttpRequest.

该请求获取一个ASP Classic页面,该页面判断MSSQL表中是否有新插入的记录,并运行一些API以将用户添加到Azure AD.

我使用jQuery进行轮询,然后我使用Windows任务管理器每5分钟运行一次VBScript.代码如下:

-VBSCRIPT:

set xmlhttp = createobject("microsoft.xmlhttp")
xmlhttp.open "GET", "https://myserver.com/polling.asp?route=create-ad-account", false
xmlhttp.send
set xmlhttp = nothing

GET请求中的ASPclassic 代码:

...

action = request("action")
route = request("route")

openDB()
select case action
    case "create-ad-account" : createADAccount()
    case else : default()
end select
closeDb()
...

function createADAccount()
''Checks table for new records, add to AD accordingly.
...

end function

function default()
%>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>

        //Get route
        var route = getUrlVars()["route"];

        //Autorun
        if(route!=''){
            doPoll('?action=' + route);
        }

        function doPoll(url) {
            var result;

            $.post(url, function(data) {
                result = data;
            })

            .done(function (){
                console.log(result);  //Show results here
                if(result!=''){
                    setTimeout(doPoll(url),1000);
                } else {
                   console.log('Task competed');
                }
            })

            .fail(function (jqXHR, textStatus, errorThrown){
                console.log('Error: ' + textStatus);
            })
        }

        function getUrlVars(){
            var vars = [], hash;
            var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
            for(var i = 0; i < hashes.length; i++)
            {
                hash = hashes[i].split('=');
                vars.push(hash[0]);
                vars[hash[0]] = hash[1];
            }
            return vars;
        }
    </script>
<%
end function

GET请求中的页面判断USERS表中新添加的记录,然后判断AD中是否存在该用户,如果不存在,则通过API调用添加这些记录.

当从浏览器加载页面时,这一切都运行得很好,当从任务调度程序运行页面时,它报告0x0,这意味着成功执行,但没有执行任何操作.

我假设当我try 直接运行VB脚本时,从VB脚本运行时,默认()函数中的JavaScript没有执行,并且没有执行任何操作(即,createADAccount函数不运行).

推荐答案

这永远不会像您预期的那样工作,因为XMLHTTP请求不知道如何处理客户端代码,它不是Internet浏览器.它没有JavaScript引擎的概念,它只是以原始形式发送和接收HTTP.

Internet浏览器应用程序中内置了处理客户端JavaScript和呈现CSS/DOM等任务.

当XMLHTTP响应处理原始的HTTP响应时,您需要自己解析脚本并执行它.


有用的链接

Javascript相关问答推荐

如何使用JavaScript动态地将CSS应用于ToDo列表?

使用useParams路由失败

为什么使用MAX_SAFE_INTEGER生成随机整数时数字分布不准确?

JS、C++和C#给出不同的Base 64 Guid编码结果

TypScript界面中的Infer React子props

zoom svg以适应圆

传递一个大对象以在Express布局中呈现

微软Edge编辑和重新发送未显示""

MathJax可以导入本地HTML文档使用的JS文件吗?

WebGL 2.0无符号整数输入变量

当Redux提供程序访问Reduxstore 时,可以安全地从Redux提供程序外部调用钩子?

Ember.js 5.4更新会话存储时如何更新组件变量

S文本内容和值不必要的不同

确保函数签名中的类型安全:匹配值

基于props 类型的不同props ,根据来自接口的值扩展类型

JavaScript是否有多个`unfined`?

使用插件构建包含chart.js提供程序的Angular 库?

按什么顺序接收`storage`事件?

使用API调用的VUE 3键盘输入同步问题

使用Perl Selify::Remote::Driver执行Java脚本时出错