Как получить данные onClick / onChange, используя xmlhttp - PullRequest
0 голосов
/ 11 января 2012

Я относительно новичок во всем этом, и поиск ответа на этот вопрос убил меня. Обратите внимание, что я, возможно, задаю не тот вопрос и, возможно, даже неправильную терминологию, но для чего это стоит:

Как пользователь сайта, я пытаюсь "перемещаться" по внутреннему aspx-сайту, используя объект xmlhttp в VBA. Хотя я могу получить доступ к элементам ID на определенных страницах сайта, используя очевидные строки URL-адреса, некоторые ElementID генерируются динамически и, таким образом, недоступны до тех пор, пока, например, пользователь не сделает выбор из меню. Информация загружается в результате какой-то функции onChange / onClick / javascript / postback. Есть ли способ получить эту динамическую информацию? Кроме того, это даже правильный подход?

Примечание: я могу сделать все это с помощью объекта IE, но я действительно пытаюсь избежать этого из соображений производительности.

При проверке документа на боковом коде веб-страницы отображается:

<select name="ctl00$plcContent$Item1$Tabs$tabServices$Services$ddServiceCats" onchange="javascript:setTimeout('__doPostBack(\'ctl00$plcContent$Item1$Tabs$tabServices$Services$ddServiceCats\',\'\')', 0)" id="ctl00_plcContent_Item1_Tabs_tabServices_Services_ddServiceCats">
<option selected="selected" value="00000000-0000-0000-0000-000000000000">Select Service Category</option>
<option value="3f44517e-135a-466a-8440-9b1250d5285b">Kites</option>
<option value="7ec669b7-4d2c-4216-b19e-491faa13995a">Bikes</option>
<option value="f0bb692f-3df7-4c04-80d4-7e2b4a2805c3">Tikes</option>
.
.
.

VBA, которую я использую для доступа к веб-странице, приведена ниже:

With xml
    .Open "GET", BASE_URL3, False
    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .Send ([no idea what to write here for the purposes of this question])
End With

Цель состоит в том, чтобы идентифицировать elementID подкатегории «Велосипеды» (например, «шины»), которая загружается после того, как мы выясним, как «выбрать» основную категорию (значение elementID подкатегории является динамическим).

Пожалуйста, дайте мне знать, если мне нужно разместить больше кода.

Еще раз спасибо за вашу помощь.

1 Ответ

0 голосов
/ 11 января 2012

Я полагаю, что корень вашей проблемы заключается в сложности разделения между тем, что происходит на стороне клиента, с JavaScript и тем, что выполняется на стороне сервера (я полагаю, VBA).

Вы также смешиваете свои метафоры, когда говорите о «сайте», когда я думаю, что вы имеете в виду страницу, а также путаете URL-адреса и элементы HTML на странице.

Если честно, я не совсем понимаю, что вы описываете и что вы пытаетесь сделать.

Чтобы ответить на ваш вопрос напрямую: да, вы можете получить динамическую информацию, которая отправляется с сервера через запрос xmlhttp. Надеемся, что вы используете платформу для выполнения этого запроса на стороне клиента, а метод обратного вызова из вашего запроса xmlhttp будет содержать данные (ответ) от сервера. Не глядя на исполняемый код, сложно дать вам подробное руководство.

Если по какой-то причине у вас нет доступа к методу обратного вызова в вашем AJAX-запросе, вы также можете проанализировать структуру DOM полученной страницы, но вам снова нужно знать, что вы ищете (т.е. какие элементы были обновлены в результате).

Опубликуйте студентку, и, возможно, мы поможем вам.

...