ajax - 如何使用 WWW::Mechanize (ajax) 发布表单

标签 ajax perl mechanize

几天前我发布了关于通过更改页面大小发布表单的信息。有人可以帮忙看看步骤。我包括表单的转储和我用来发布它的代码。这是获取第一页的代码,默认为 30 个播放器的页面大小,然后我将发布表单以将页面大小更改为 500。

my $mech = WWW::Mechanize->new();
my $url = "https://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=steamer&team=0&lg=all&players=0";
$mech->get($url);
print Dumper($mech->forms());
$VAR1 = bless( {
                 'default_charset' => 'UTF-8',
                 'enctype' => 'application/x-www-form-urlencoded',
                 'accept_charset' => 'UNKNOWN',
                 'action' => bless( do{\(my $o = 'https://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=steamer&team=0&lg=all&players=0')}, 'URI::https' ),
                 'method' => 'POST',
                 'attr' => {
                             'id' => 'form1',
                             'method' => 'post'
                           },
                 'inputs' => [
                               bless( {
                                        'readonly' => 1,
                                        '/' => '/',
                                        'value_name' => '',
                                        'value' => '',
                                        'name' => 'RadScriptManager1_TSM',
                                        'id' => 'RadScriptManager1_TSM',
                                        'type' => 'hidden'
                                      }, 'HTML::Form::TextInput' ),
                               bless( {
                                        '/' => '/',
                                        'value' => '30',
                                        'name' => 'ProjectionBoard1$dg1$ctl00$ctl02$ctl00$PageSizeComboBox',
                                        'readonly' => 'readonly',
                                        'value_name' => '',
                                        'type' => 'text',
                                        'class' => 'rcbInput radPreventDecorate',
                                        'id' => 'ProjectionBoard1_dg1_ctl00_ctl02_ctl00_PageSizeComboBox_Input'
                                      }, 'HTML::Form::TextInput' ),
                               bless( {
                                        'tabindex' => '-1',
                                        'class' => 'rcbActionButton',
                                        'type' => 'button'
                                      }, 'HTML::Form::SubmitInput' ),
                               bless( {
                                        'readonly' => 1,
                                        '/' => '/',
                                        'value_name' => '',
                                        'name' => 'ProjectionBoard1_dg1_ctl00_ctl03_ctl01_PageSizeComboBox_ClientState',
                                        'id' => 'ProjectionBoard1_dg1_ctl00_ctl03_ctl01_PageSizeComboBox_ClientState',
                                        'type' => 'hidden'
                                      }, 'HTML::Form::TextInput' ),
                             ]
               }, 'HTML::Form' );


然后我尝试使用以下内容提交表单:
$mech->submit_form(
    form_id => 'form1',
    with_fields => {
        name    => 'ProjectionBoard1$dg1$ctl00$ctl03$ctl01$PageSizeComboBox',
        id      => 'ProjectionBoard1_dg1_ctl00_ctl03_ctl01_PageSizeComboBox_Input',
        value   => 500,
    },
);

但我从脚本中得到的响应是“没有包含请求字段的表单”

最佳答案

尝试这样的事情:

use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
my $url = "https://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=steamer&team=0&lg=all&players=0";
$mech->get($url);
$mech->set_fields( 
'RadScriptManager1_TSM' => '',
'ProjectionBoard1$dg1$ctl00$ctl02$ctl00$PageSizeComboBox' => '30'
'ProjectionBoard1_dg1_ctl00_ctl03_ctl01_PageSizeComboBox_ClientState' => ''
);
$mech->submit;

使用语法 'FIELD_NAME' => 'VALUE' 设置表单字段,然后提交

关于ajax - 如何使用 WWW::Mechanize (ajax) 发布表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60400930/

相关文章:

javascript - 访问json不起作用

Jquery 和 UpdatePanel

JavaScript - 测量远程页面的加载时间

perl - 为什么这里不需要取消引用?

ruby - 在 Mechanize 中使用带有 CSS 选择器的 page.at

javascript - 如何使用 javascript/jQuery/ajax 打印不同的页面?

Perl:cmpthese 文本与传递参数的匿名子问题

perl - 如何对由字符串标识的列表进行操作?

ruby - Mechanize 带有后缀的选择 ID

python - 使用 Python Mechanize 登录网站时遇到问题。