HTTP请求POST AJAX(JS)提交表单

时间:2019-04-05 02:01:10

标签: javascript ajax vba xmlhttprequest

我试图从VBA中的IE自动化更改为httprequest,当尝试使用诸如function()之类的onclick动作提交表单数据时遇到了一些问题。问题在于,当onclick()时,表单数据已提交到同一域下的另一个URL。

例如我正在浏览网页www.test.com/asp.net?186848 当我在chrome调试器上跟踪时,post方法实际上是在将数据提交到www.test.com/component/mxAjaxFunctions.cfc?method=init&ajaxcallid=5498_15544XXXXXXX

摘要

使用按钮提交的网站上的1.form是onclick函数()

2.form被提交到另一个URL,通过表单提交的ID是原始URL中包含的ID。

3。新网址的一部分包含随机生成的ID +日期

最初,我在vba中使用以下httprequest来获取数据,但是它不起作用,响应返回相同的内容。

然后我去google chrome并使用网络记录器,以下是实际发生的事件。

  1. 将表单数据提交到与我正在查看的URL不同的URL。 www.test.com/component/mxAjaxFunctions.cfc?method=init&ajaxcallid=5498_15544XXXXXXX 后来我从chrome中读取.JS文件,发现ajaxcallid之后的5498是一个随机数,而15544XXX实际上是js中的date.now()。

2。chrome记录的提交表单数据如下:

方法:初始化

功能:某些功能

id:123456

statuscontent:我在文本框中输入的实际内容

我尝试使用其他无效的URL修改发布请求,并尝试从chrome复制和粘贴表单数据,但它不起作用,我还尝试将发布方法更改为init这也不起作用。

objHTTP.Open "POST", originalURL, False
objHTTP.setRequestHeader "Content-type",  "application/x-www-form- 
urlencoded"
objHTTP.send("form data")

尝试

objHTTP.Open "POST", newURL, False
objHTTP.setRequestHeader "Content-type",  "application/x-www-form-                
urlencoded"
objHTTP.send("form data")

没有工作

尝试

objHTTP.Open "INIT", newURL, False
objHTTP.setRequestHeader "Content-type",  "application/x-www-form-    
urlencoded"
objHTTP.send("form data")

没有工作

尝试

objHTTP.Open "INIT", newURL, False
objHTTP.setRequestHeader "Content-type",  "application/x-www-form-    
urlencoded"
objHTTP.send("form data copy from chrome")

没有工作

尝试

objHTTP.Open "INIT", originalURL, False
objHTTP.setRequestHeader "Content-type",  "application/x-www-form- 
urlencoded"
objHTTP.send("form data copy from chrome")

没有工作

1 个答案:

答案 0 :(得分:0)

我已经知道了。因此,以下是我为使该httprequest帖子正常工作所做的工作。

我猜第一次是行不通的,是我直接复制了url,而不是使用复制的url,我生成了一个自unix日期起经过的随机数+毫秒,就像js在网页上所做的一样。我能够发布与从Google chrome复制的字符串相同的数据。

getunixtime = DateDiff("s", "01/01/1970 00:00:00", Now()) & Right(Timer * 
100, 3)
URL = www.test.com/component/mxAjaxFunctions.cfc? 
method=init&ajaxcallid="& cint(rnd*10001) & "_"& getunixtime


objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-type",  "application/x-www-form-    
urlencoded"
objHTTP.send("form data copy from chrome")