【发布时间】:2019-09-02 17:55:26
【问题描述】:
我将 javascript 注入 PHP 网站以避免弹出窗口,以自动提交表单。另外,jquery 存在问题,所以我使用的是纯 javascript。
这是页面上的表格:
<form action='http://mywebsite.com/index.php?&act=MYFUNCTION&CODE=01&CookieDate=1' name='subscribe_check' method='POST'>
<input type='hidden' name='value1' value='dynamicallygenerated'>
<input type='hidden' name='Value2' value='BlogSection'>
<input type='hidden' name='Value3' value='BlogName'>
<select class='forminput' name='sub_id' onchange='this.form.submit()'>
<option value='------------' selected='selected'>To read this article, you must choose a subscription level</option>
<option value='1'>Subscribe to daily updates</option>
<option value='2'>Subscribe to promotional emails</option>
<option value='3'>No thanks, I'm not interested in being healthy</option>
</select>
</form>
这是我的javascript:
// unselect any selected item on the SELECT
if( document.getElementsByName('subscribe_check').selectedIndex )
document.getElementsByName('subscribe_check')[document.getElementsByName('subscribe_check').selectedIndex].selected = false;
// select select the last option
document.getElementsByName('subscribe_check')[1][3].selected = true;
// submit the form
document.forms[0].submit();
当我手动点击表单时,我知道这些值被设置了
value1: dynamicallygenerated
value2: HealthyFoodSection
value3: HealthyFoodFunBlog
但是当我的 javascript 提交表单时,这些值被提交了
value1: dynamicallygenerated
value2: BlogSection
value3: BlogName
我 100% 确定没有其他 javascript 正在触发以更改值 - 不可能,onchange 直接调用 submit()。
我不明白为什么我的 javascript 提交表单不会像手动单击它那样更改值?如果发生 PHP,我不明白它是如何检测到我的 javascript 提交表单而不是我点击提交,提交点击就是提交点击,对吧?
【问题讨论】:
-
能否添加代码,将隐藏值(value1、value2...3)从
BlogSection和BlogName更改为HealthyFoodSection和HealthyFoodFunBlog?我看不到您“如何”提交这些值(它们永远不会存在)。 -
顺便说一句。也许您的问题是
inputs的name属性:对于值2 和3,您使用Value2和Value3而不是value2和value3(小写) -
我不清楚这段 Javascript 代码何时执行(它是否在事件侦听器中?)。但我也在这里看到了一些错误。
selectedIndex是 select DOM element 上的一个属性,但我看到的唯一名称为subscribe_check的元素是表单本身。 (该选择的名称为sub_id。)此外,getElementsByName 返回一个集合,因此无论如何您都无法直接访问其中一个元素的属性。 -
请贴出设置隐藏元素值的代码。
标签: javascript forms post