这是第一次,在我的生活中从未见过这一点,我在过去的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>
如果我在Bill旁边的文本框中输入“很伤心”,现在我在文本框中有“Bill is sad”。如果我提交它我只得到Bill和隐藏字段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。如果我做一个警告或concole.log的jQuery(“#ko_smail”)。attr(“value”)当我执行print_r($ _ POST)时,我只在PHP端有正确的值我得到了错误的值? ???
我暂时搁置,直到明天我会调查更多。
问候
答案 0 :(得分:1)
为什么使用div
代替submit
按钮?
<div class="btn btn-warning koBtn" id="koBtnSave">Save</div>
将其更改为:
<input type = "submit" class="btn btn-warning koBtn" id="koBtnSave" value="Save" />
答案 1 :(得分:0)
啊,我找到了这个奇怪问题的答案。
客户已经为他的网站启用了CloudFlare缓存,我要求禁用它并且问题已经消失,我要求启用它并恢复原始设置并且问题是历史记录。
我认为他会在场景中发挥作用并对表格做些什么。
无论如何它是代码12:O)
关心所有