PHP通过表单发布/提交错误信息

时间:2017-10-17 08:01:57

标签: php prestashop prestashop-1.6

我动态生成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模块。

4 个答案:

答案 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失败。

顺便说一句,这是我一直在使用的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;这将被追加。

为防止自动提交,您可以在表单中添加隐藏的令牌。