HTTP-запрос POST AJAX (JS) Отправить форму - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь перейти с автоматизации IE в VBA на httprequest, я сталкиваюсь с некоторой проблемой, когда пытаюсь отправить данные формы с помощью действия onclick, подобного функции ().Проблема в том, что когда onclick () данные формы были отправлены на другой URL в том же домене.

ex.Я просматриваю веб-страницу www.test.com/asp.net?186848, когда я отслеживал работу в отладчике Chrome, метод post фактически передает данные в www.test.com/component/mxAjaxFunctions.cfc?method=init&ajaxcallid=5498_15544XXXXXXX

Сводка

1. Форма на веб-сайте, отправленная с помощью кнопки, является функцией onclick ()

2. Форма отправляется на другой URL-адрес, идентификатор, отправляемый через форму, - это тот, которыйсодержится в исходном URL.

3.часть нового URL содержит случайно сгенерированный идентификатор + дата

Первоначально я использовал следующий httprequest в vba для получения данных, но он не работает,ответ возвращает тот же контент.

Затем я зашел в Google Chrome и использовал сетевой регистратор, вот события, которые на самом деле произошли.

  1. данные формы передаются вдругой URL, чем тот, на который я смотрел.www.test.com/component/mxAjaxFunctions.cfc?method=init&ajaxcallid=5498_15544XXXXXXX позже я узнал, прочитав файл .JS из chrome, что 5498 после ajaxcallid - это случайное число, а 15544XXX - фактически date.now () из js

2. Данные формы, представленные в журнале Chrome, следующие:

метод: init

функция: somefunction

id: 123456

statuscontent: фактическое содержимое, которое я помещаю в текстовое поле

Я попытался изменить запрос на публикацию с другим URL-адресом, который не работает, и я попытался скопировать и вставить данные формы из 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")

не работал

1 Ответ

0 голосов
/ 06 апреля 2019

Я понял это уже. вот что я сделал, чтобы заставить этот пост 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...