使用 microsoft.xmlhttp 通过 vbs 调用网页时,Javascript 将不会执行

问题描述 投票:0回答:1

我有一个流程,我创建了一个轮询函数,该函数通过 vbs 脚本执行 microsoft.xmlhttp 请求。

该请求获取一个 asp 经典页面,该页面检查 MSSQL 表中是否有新插入的记录,并运行一些 api 将用户添加到 Azure AD。

我使用 Jquery 脚本进行轮询,然后使用 Windows 任务计划程序每 5 分钟运行一次 vbs 脚本。这是代码:

VBS脚本:

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

GET请求中的ASP经典代码:

...

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

获取请求中的页面检查用户表中是否有新添加的记录,然后检查用户是否存在于 AD 中,如果不存在,则通过 API 调用添加它们。

从浏览器加载页面时一切正常,从任务计划程序运行它时,它会报告 0x0 意味着成功执行,但什么也没做。

我假设从 vbs 脚本运行时,default() 函数中的 javascript 不会执行,因为我尝试直接运行 vbs 脚本,但没有执行任何操作(即 createADAccount 函数不运行)。

任何帮助将不胜感激:)

jquery vbscript asp-classic scheduled-tasks
1个回答
0
投票

这永远不会像你期望的那样工作,因为 XMLHTTP 请求不知道如何处理客户端代码,它不是 Internet 浏览器。

© www.soinside.com 2019 - 2024. All rights reserved.