我动态生成FORMS,每个表单都有一个ID作为GET变量。所以我们说有两种形式:
<form action='website.com/controller?id=1'>
<input type="submit" name="submitting">
</form>
<form action='website.com/controller?id=2'>
<input type="submit" name="submitting">
</form>
现在,由于一些奇怪的原因,我在我的控制台中看到了POST请求:
http://website.com/controller?id=2
对于这两种形式。在提交表单时,我看到相同的POST请求。
PS:我正在修改一个Prestashop模块。
答案 0 :(得分:0)
这应该有效:
<form action='website.com/controller' method='get'>
<Input type='hidden' name='id' value='1'>
<input type="submit" name="submitting"> </form>
<form action='website.com/controller' method='get'>
<Input type='hidden' name='id' value='2'>
<input type="submit" name="submitting"> </form>
答案 1 :(得分:0)
如果您在页面加载后动态添加表单,并使用事件处理程序提交表单,则需要使用事件委派。
事件处理程序必须附加到页面加载时存在的元素。在页面加载后,您无法将处理程序附加到稍后动态添加的元素。
解决此问题的方法是使用event delegation。例如:
$('form').on('submit', function() {
// This will handle any form which exists at page load. Any form
// dynamically added later will not be handled.
}
$('body').on('submit', '#someFormID', function(e) {
// This is attached to the parent body element, which of course exists
// on load, and will handle submission of anything in the body, even
// those which did not exist at page load. You can then filter to
// match only elements matching the next parameter - eg in this case
// handle only something with id 'someFormID'.
}
$('body').on('submit', function(e) {
// You can also dynamically work out which form has been submitted
var $button = $(e.target),
$form = $button.closest('form'),
action = $form.attr('action');
}
答案 2 :(得分:0)
我感谢大家抽出时间。
最后一步:我认为我不能使用Ajax,因为每次POST时,它都会获得上次生成的form
n
因此,如果有http://website.com/controller?id=n
个表单,则POST为每个提交按钮看起来都像:
form
如果只有1个表格,那就不会有问题了。但由于jQuery('form[name=someclass]).submit(function(e){
$.ajax({
url: $('form[name=st_blog_comment_form]').attr('action'),
type: 'POST',
headers: { "cache-control": "no-cache" },
dataType: 'json',
data: $('form[name=someclass]').serialize(),
cache: false,
success: function(json){}
)};
次出现是可靠的,因此AJAX失败。
{{1}}或许,或许,我没有正确使用ajax。
答案 3 :(得分:-1)
当我们执行代码时,您将获得两个提交按钮,第一个用于第一个表单,第二个用于第二个表单。对于每个表单,在表单标记中指定了相应的操作,因为方法未在表单标记中定义,默认情况下它会将其视为请求GET,您可以使用$ _REQUEST或$ _GET来访问提交值。如果你需要一种安全的方式,你可以尝试使用POST并通过$ _POST访问thous值。
例如:如果我们在php测试文件夹中执行上述表单并提交,您将会像这样 http://localhost/test/website.com/controller?submitting=Submit
如果您在html中创建相同的内容并提交文件夹路径&#34; website.com/controller?submitting = Submit&#34;这将被追加。
为防止自动提交,您可以在表单中添加隐藏的令牌。