假设有一个网站具有一系列选项/选择下拉菜单。当用户从下拉列表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发送给自身。
我想从此Web应用程序下载所有数据;也就是说我希望看到与所有可能的下拉C值相关的数据。最好的方法是什么?我看到wget设置为使用链接递归工作,但似乎没有像这样的表单。我会对最简单,最快捷的方式感兴趣。我知道PHP所以我愿意在cURL中编写一个脚本,但是如果有一个更简单的解决方案,比如那里的程序就已经完成了这个(wget?)我会感兴趣。欢迎任何提示或建议。
答案 0 :(得分:0)
您可以将信息结构化为链接列表,您拥有数据,以及父主键。这样,您可以一次性将所有数据下载为JSON。
我们所做的是设置三个Web方法,第一个提供所有设置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包含数据。
答案 1 :(得分:0)
您可以使用CURL来做到这一点。
您可以从命令行使用它:
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
来源是CURL手册:http://curl.haxx.se/docs/manual.html
答案 2 :(得分:0)
babonk,
我认为您无法使用该html文件将数据发布到您的服务器,因为您错过了选择部分中的“name”属性,它们应如下所示:
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/