如何使用JavaScript/jQuery在提交之前查看POST值
我被卡住了。我的公司正在重新设计它的网站,但我坚持尝试在旧网站上进行修复以解决问题。我需要使用JavaScript或jQuery。如何使用JavaScript/jQuery在提交之前查看POST值
当提交表单时,POST键被发送到以“selectedItem_”开头的服务器,后面是项目ID。附在其上的值是按钮“购买此”的文本。完整的关键字:值对看起来是这样的:
selectedItem_IDME1KEXN_0_0 : "Buy This"
由于形式有几种不同版本的同一项目,谁编程这把表格上的几个按钮,每个按钮用这种密钥。所以可能有多达4个或5个几乎相同的按钮。分配给它们的值是actualy价格,像这样:
selectedItem_IDME1KEXN_0_0 : 93.95
selectedItem_IDME2KEXN_0_0 : 99.95
selectedItem_IDME3KEXN_0_0 : 114.95
selectedItem_IDME4KEXN_0_0 : 119.95
所有这些都越来越发送到服务器,这是导致服务器有时会选择错误的值。 (我不知道为什么它被编程这样的,我只是想对付它!)
我的问题:
我如何使用JavaScript或者jQuery来评估什么是目前存储在后在它被发送到服务器之前?我很想遍历以“selectedItem_”开头的键,并在发送之前将任何不正确的键取出。
您可以将事件绑定到表单的submit
事件,然后查看数据。
var $form = $('form').first();
$form.on('submit', function(e) {
e.preventDefault();
console.log($form.serializeArray());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="POST" action="">
<input type="text" name="key1" />
<input type="text" name="key2" />
<input type="submit" />
</form>
如果所有的数据都是从输入标签的形式,然后再尝试这样的事:
document.querySelector('form').addEventListener('submit', function (e) {
var input = document.querySelectorAll('input[name^="selectedItem_IDME"]');
var valid = true;
for (var i = 0; i < input.length; i++) {
var item = input[i];
if (Number(item.value) === 93.95) {
valid = false;
e.preventDefault();
}
}
});
如果我正在处理静态页面,这可能会起作用。但是,所有的订单都是根据当时库存情况动态生成的,价格随时可能变化。所以我的解决方案也必须是动态的。 – cmdoc
您没有远远不够的信息在你的问题,但是,可能会绑定到表单的'submit'事件,拦截正在提交的表单数据,甚至可能取消/阻止提交表单。顺便说一句,关于*的一个很好的问题显示了你所尝试过的东西(它被称为[最小,完整和可验证示例](http://*.com/help/mcve)) –
另外 - 这听起来像一个相当“企业“网站 - 你为什么坚持使用JavaScript?你不能修改服务器端代码吗? –
@cale_b - 我很想修改服务器端代码,但是所有的前端开发人员都致力于新的代码库。只有旧网站和旧代码库允许修复。 (呃) – cmdoc