这是我这辈子第一次,从来没有见过这个,我在过去的 20 年里一直做这份工作......
我有一个客户,遇到表单问题,当您提交表单时,仅发送隐藏字段和静态值。
模拟。。。
在代码中我有这个
<form action="index.php?option=com_kocgc&format=raw&task=preview_card&lang=en" method="post" name="ko_cgc" id="ko_cgc">
<input type="text" name="ko_smail" id="ko_smail" class="koInputBox" value="Bill" />
<input type="hidden" name="id" id="id" value="123">
<div class="btn btn-warning koBtn" id="koBtnSave">Save</div>
</form>
如果我在比尔旁边的文本框中输入"很难过",现在我在文本框中有"比尔很难过"。如果我提交它,我只得到比尔和隐藏字段 ID 的 123,如果我清空字段,javascript 会告诉该字段为空如果我在文本框中输入 Ginger 并提交它,我总是会收到 Bill,但如果我用 javascript 拦截表单,一切都是完美的,只有在服务器端 (PHP) 我得到了空表单??????
我使用 print_r($_POST); 查看结果
此代码仅在该服务器上的另一台服务器上工作正常,我遇到了这个奇怪的问题。
我在这里问这个问题,以防万一有人已经经历过并找到了原因,因为我很确定这将在我的奇怪书中很长一段时间:O)
如果我找到它,我会发布原因。
非常感谢
编辑
这是我用来提交表单的javascript
jQuery('#koBtnSave').click(function(){
var valid = validField(jQuery("#ko_smail"), "text");
if(valid == true) {
jQuery("#ko_cgc").attr("action","index.php?option=com_kocgc&format=raw&task=save_card&lang=en");
jQuery("#ko_cgc").attr("target","_self");
jQuery("#ko_cgc").submit();
}
});
validField 函数仅检查 if(field.attr("value") == ") {,如果为空则返回 false。如果我对jQuery("#ko_smail").attr("value")发出警报或.log 当我执行print_r($_POST)时,我仅在PHP端具有正确的值,我得到了错误的值????
我搁置了这件事,直到明天我会调查更多。
问候
为什么使用div
而不是submit
按钮?
<div class="btn btn-warning koBtn" id="koBtnSave">Save</div>
将其更改为如下所示:
<input type = "submit" class="btn btn-warning koBtn" id="koBtnSave" value="Save" />
我找到了这个奇怪问题的答案。
客户为他的网站启用了CloudFlare缓存,我要求禁用它,问题消失了,我要求启用它并恢复原始设置,问题是历史。
我认为他在场景中踢球,并对形式做了一些事情。
无论如何,这是一个代码 12 :O)
问候所有人