我有一个关于 excel VBA HTTP 请求和 JavaScript 的问题。我想通过“POST”在内部网站上进行搜索,但提交按钮似乎运行 JavaScript 来重新加载网站,但我不知道如何操作。
Public Function XmlHttpTutorial()
Dim xmlhttp As New MSXML2.XMLHTTP60
Set xmlhttp = CreateObject("MSXML2.serverXMLHTTP")
Dim HTMLDoc As New HTMLDocument
Dim myurl As String
myurl = "http://www.website.de"
xmlhttp.Open "POST", myurl, False
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.setRequestHeader "User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)1"
xmlhttp.setRequestHeader "Cookie", "serverTimeOffset=-3600149; browserTimeZone=-60;"
xmlhttp.Send ("var1=variable&var2=variable&var3=variable")
Debug.Print xmlhttp.responseText
End Function
这是按钮本身
<input type="submit" name="button" tabindex="8" value="Find" onclick="closeWindow();uppercaseForm( this.form );" class="btn-small">
“closeWindow”只是关闭窗口,“uppercaseForm”只是将所有输入大写
这是标题
<form name="arrivalQueryForm" method="post" action="/opslink/arrivalQuery.do" onsubmit="setWindowId(this, 'windowId');">
setWindowID 只获取window.name 和替换括号。
我不知道如何恢复正确的网站,因为到目前为止似乎没有任何效果。
最佳答案
据我所知,VBA 与 HTML 无关。 XHR 被嵌入到 HTML 表单对象中(注意 method=post
属性)。 onsubmit 与 HTML 表单结合在一起。
我建议您不要使用 HTML 表单元素并在 JavaScript 中手动编写 XHR 脚本,这样您就可以通过 button
元素上的 .click
事件了解该机制的工作原理.
如果您想在不打开 Web 浏览器的情况下从 Excel 本身获取/XHR,则可以使用该 VBA。
关于javascript - http请求和JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453950/