在我构建的网上商店中,我发布了HTML表单时遇到问题。几乎在所有情况下(99,9%),这都按预期工作,但在某些特定情况下,它会出错。我真的不知道。这就是我在这里发布问题的原因。
我的HTML表单如下:
<form id="gegevens" class="form-horizontal margin-bot-15" method="post" action="<?=HOST?>/winkelmand/gegevens-controleren/" role="form" autocomplete="off">
// Some input forms and a lot of HTML
<input type="submit" class="btn btn-shopping-cart" value="order">
</form>
现在应使用/winkelmand/gegevens-controleren/
访问网页POST
,而不是GET
。在99.9%的案例中,这也是预期的POST
。但在其他情况下,它是GET
,并且没有数据发布到此页面。
我可以在访问日志中看到这一点,因为通过/winkelmand/gegevens-controleren/
访问了网址GET
。我在同一天(和没有问题的前7天)两次发生此问题。订单数量大到足以说明真正的少量订单出错了。我在访问日志中注意到的唯一一件事就是这两个订单都是从带有Safari的Mac发出的,而且它们是从另一个网站重定向到这个网站的。
用户代理:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 Safari/600.1.25"
。
在我自己的Mac上使用Safari和OSX 10.10我和其中一个客户做了相同的操作,同样的重定向步骤相同,但一切都像我预期的那样。
有没有人知道可能导致这种情况或我可以检查的内容?
更新 他们手动输入URL的建议非常不可能,但可能是可能的。
我使用jQuery验证来验证表单。在这个javascipt之下。
$("#gegevens").validate({
focusInvalid: false,
rules: {
email: {
required: true,
emailFull: true
}
},
messages:{
email: {
required: "Er is geen e-mailadres ingevuld.",
emailFull: "Vul een geldig e-mailadres in."
}
},
errorClass: 'has-error',
validClass: 'has-success',
ignore: "",
errorElement: "div",
errorPlacement: function (error, element) {
if(element[0].name == "betaalmethode"){
// Bij element betaalmethode melding tonen na de lijst
$("ul.list-betaalmethode").after(error);
}else if(element[0].name == "voorwaarden"){
// Bij voorwaarden melding tonen na het element
element.parent().after(error);
}
},
highlight: function (element, errorClass, validClass) {
$(element).nextAll('.glyphicon').removeClass('hidden glyphicon-ok has-succes').addClass('glyphicon-exclamation-sign has-error');
$(element).addClass("input-error");
},
unhighlight: function (element, errorClass, validClass) {
$(element).nextAll('.glyphicon').removeClass('hidden glyphicon-exclamation-sign has-error').addClass('glyphicon-ok has-success');
$(element).removeClass("input-error");
},
invalidHandler: function(form, validator) {
if (!validator.numberOfInvalids()) {
return;
}else {
// De eerste melding plaatsen in de meldingBody
// element ID plaatsen in data-focus van de OK button
// Popup tonen
$("#meldingBody").html(validator.errorList[0].message);
$("#meldingOk").data("focus", validator.errorList[0].element.id);
$("#melding").modal('toggle');
}
},
submitHandler: function (form) {
if ($(form).valid()) {
form.submit();
}
}
});