Форма отправки HTTP-запроса ПОСЛЕ AJAX (JS)

#javascript #ajax #vba #xmlhttprequest

#javascript #ajax #vba #xmlhttprequest

Вопрос:

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

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

Краткие сведения

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

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

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

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

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

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

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

метод: инициализация

функция: somefunction

идентификатор: 123456

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

Я попытался изменить запрос post с другим 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. Что означает «не сработало»? Вы получали одно и то же сообщение об ошибке или неожиданный ответ во всех случаях?

2. Не сработало, значит, я получил тот же текст ответа.

3. Я уже разобрался с этим. итак, ниже было то, что я сделал, чтобы заставить этот httprequest post работать. Итак, я предполагаю, что не сработало, я скопировал URL напрямую с первой попытки, вместо этого, используя скопированный URL, я сгенерировал случайное число миллисекунда, прошедшая с даты unix, точно так же, как то, что js сделал на веб-странице. Я смог опубликовать данные, которые являются той же строкой, которую я скопировал из Google Chrome.

Ответ №1:

Я уже разобрался с этим. итак, ниже было то, что я сделал, чтобы заставить этот httprequest post работать.

Я думаю, что в первый раз не сработало то, что я скопировал URL напрямую, вместо этого, используя скопированный URL, я сгенерировал случайное число миллисекунда, прошедшая с даты unix, точно так же, как то, что js сделал на веб-странице. Я смог опубликовать данные, которые представляют собой ту же строку, которую я скопировал из Google Chrome.

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


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