Загрузка данных из опции / выберите веб-форму - PullRequest
0 голосов
/ 12 ноября 2010

Предположим, что существует веб-сайт с иерархической последовательностью раскрывающихся списков параметров / выбора. Когда пользователь делает выбор из раскрывающегося списка A, значение его выбора публикуется на сервере, а раскрывающийся список B заполняется. Выпадающий B заполняет раскрывающийся список C таким же образом. Когда выбран раскрывающийся список C, данные показываются конкретно для их выбора в C. Предыдущие варианты выбора сохраняются в течение всего пути, если только они не изменяют что-то более высокое, и в этом случае все сбрасывается ниже этого. В HTML это выглядит так:

Drop-Down A 
<select class="submitOnChange">
 <option value="a1">A</option>
 <option value="a2" SELECTED>B</option>
 <option value="a3">C</option>
</select>
Drop-Down B
<select class="submitOnChange">
 <option value="b1" SELECTED>B-A</option>
 <option value="b2">B-B</option>
 <option value="b3">B-C</option>
</select>
Drop-Down C
<select class="submitOnChange">
 <option value="c1">B-A-A</option>
 <option value="c2">B-A-B</option>
 <option value="c3" SELECTED>B-A-C</option>
</select>
[Data for B-A-C is shown here because they clicked that]

Сценарий работает специально, отправляя POST всех выбранных опций каждый раз при изменении выбора.

Я хотел бы загрузить все данные из этого веб-приложения; то есть я хотел бы видеть данные, связанные со всеми возможными раскрывающимися значениями C. Каков был бы лучший способ сделать это? Я вижу, что wget настроен на рекурсивную работу со ссылками, но, похоже, не с такими формами. Я был бы заинтересован в самом простом и быстром способе сделать это. Я знаю PHP, поэтому я был бы готов написать сценарий на cURL, однако, если есть более простое решение, такое как программа, которая делает это просто (wget?), Я бы заинтересовался. Любые советы или предложения приветствуются.

Ответы [ 3 ]

0 голосов
/ 12 ноября 2010

Вы можете использовать CURL для этого.

Вы можете использовать его из командной строки:

curl -d "name=Rafael%20Sagula&phone=3320780"                 http://www.where.com/guest.cgi

Источник - руководство по CURL: http://curl.haxx.se/docs/manual.html

0 голосов
/ 13 октября 2014

babonk,

Я думаю, что вы не можете опубликовать данные на своем сервере с этим html-файлом, потому что вы пропустили атрибут "name" в разделе select, они должны выглядеть примерно так:

Drop-Down A 
<select class="submitOnChange" name="selectA">
 <option value="a1">A</option>
 <option value="a2" SELECTED>B</option>
 <option value="a3">C</option>
</select>
Drop-Down B
<select class="submitOnChange" name="selectB">
 <option value="b1" SELECTED>B-A</option>
 <option value="b2">B-B</option>
 <option value="b3">B-C</option>
</select>
Drop-Down C
<select class="submitOnChange" name="selectA">
 <option value="c1">B-A-A</option>
 <option value="c2">B-A-B</option>
 <option value="c3" SELECTED>B-A-C</option>
</select>

И тогда вы можете получить содержимое с помощью следующего списка команд wget:

wget -O yourhtml.htm --post-data "selectA=a1&selectB=b1&selectC=c1" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b1&selectC=c2" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b1&selectC=c3" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b2&selectC=c1" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b2&selectC=c2" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b2&selectC=c3" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b3&selectC=c1" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b3&selectC=c2" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b3&selectC=c3" http://yoururl.com/
......
wget -O yourhtml.htm --post-data "selectA=a3&selectB=b3&selectC=c3" http://yoururl.com/
0 голосов
/ 12 ноября 2010

Вы можете иметь информацию, структурированную как связанный список, где у вас есть данные и родительский первичный ключ.Таким образом, вы можете загрузить все данные за один снимок, например, в формате JSON.

Мы установили три веб-метода: первый предлагал все параметры набора A, второй и третий принимали один и два параметра, всетри предлагают JSON клиенту, используют JQuery и ajax-вызов:

var responseObject = {};
responseObject.parameterA = $('#selectA option:selected').val();
responseObject.parameterB = $('#selectB option:selected').val();
responseObject.parameterC = $('#selectC option:selected').val();
var jsonResult = JSON.stringify(responseObject);

$.ajax({
    type: "POST",
    url: "http://whereever.com",
    data: jsonResult,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (j) { 
        var options = '';
        for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].value + '">' + j[i].text + '</option>';
}

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

...