【问题标题】:HTTP Request POST AJAX(JS) Submit FormHTTP 请求 POST AJAX(JS) 提交表单
【发布时间】:2019-08-26 21:04:30
【问题描述】:

我正在尝试从 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.网站上使用按钮提交的表单是onclick function()

2.form提交到不同的URL,通过form提交的ID是原URL中的ID。

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

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

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

  1. 表单数据被提交到与我正在查看的不同的 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 修改 post 请求,但不起作用,我尝试从 chrome 复制并粘贴表单数据,它不起作用,我还尝试将 post 方法更改为 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")

没用

【问题讨论】:

  • 没用是什么意思?您是否在所有情况下都收到相同的错误消息或意外响应?
  • 没有工作意味着我得到了相同的响应文本。
  • 我已经弄明白了。因此,以下是我为使该 httprequest 帖子正常工作所做的工作。所以我想什么不起作用是我在第一次尝试时直接复制了 url,而不是使用复制的 url,我生成了一个随机数 + 自 unix 日期以来经过的毫秒数,就像 js 在网页上所做的那样。我能够发布与我从谷歌浏览器复制的字符串相同的数据。

标签: javascript ajax vba xmlhttprequest


【解决方案1】:

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

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

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")

【讨论】:

    猜你喜欢
    • 2017-02-18
    • 2011-05-19
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    相关资源
    最近更新 更多