Php 如何在提交表单时排除某些表单字段而不禁用该字段

Php 如何在提交表单时排除某些表单字段而不禁用该字段,php,javascript,ajax,Php,Javascript,Ajax,如果我有一个包含以下3个字段的表单: 名字姓氏出生日期 当用户填写所有3个字段并提交时,您将获得URL http: //fakeURL.php?firstName=Fred&lastName=Flintstone&DateOfBirth=2/5/1952 但是,如果用户只填写名字和出生日期,您将获得 http: //fakeURL.php?firstName=Fred&lastName=&DateOfBirth=2/5/1952 (where lastName

如果我有一个包含以下3个字段的表单:

名字姓氏出生日期

当用户填写所有3个字段并提交时,您将获得URL

http: //fakeURL.php?firstName=Fred&lastName=Flintstone&DateOfBirth=2/5/1952
但是,如果用户只填写名字和出生日期,您将获得

http: //fakeURL.php?firstName=Fred&lastName=&DateOfBirth=2/5/1952 (where lastName has no value)
我如何实现目标

http: //fakeURL.php?firstName=Fred&DateOfBirth=2/5/1952 (where lastName and value are removed from the URL)
我不想在使用onsubmit时禁用输入字段。有没有比禁用输入字段更好的方法

请帮助……

您必须:

  • 在提交表单之前,从表单中删除或禁用该字段
  • 不要提交表单,而是重定向到您自己从表单构造的URL
  • 发出AJAX请求,而不是离开页面

  • 除了这些选项之外,如果所有输入都不成为URL的一部分,则无法通过GET提交此表单。这是HTML和HTTP规范的一部分。

    当新页面被设置为书签并传递时,您应该使用带有
    GET
    方法的表单

    由于您正在谈论从用户获取输入(我假定您也将该输入存储在数据库或类似的永久存储中),因此您应该使用
    POST

    ,只需从输入元素中删除“name”属性即可

    // using jQuery
    $('#inputId').removeAttr('name');
    
    // native Javascript
    document.getElementById('inputId').removeAttribute('name');
    

    为什么不想禁用“提交”处理程序中的字段?为什么字段为空很重要?在任何情况下,您是否考虑过使用POST而不是GET,以便您的URL更干净,并且对访问者隐藏更多的实现。这是一个很棒的简单解决方案。谢谢这比最上面的答案要简单得多,并且对于某些输入只在某种程度上帮助用户而不需要提交的情况非常有效(在这种情况下,我们根本不给它一个
    名称
    )。(使用开发人员控制台的网络面板检查发送的请求,该请求应该是
    ?sent=foo
    )。某些类型的输入(例如
    无线电
    )如果没有
    name
    属性,则无法正常工作。请告诉WordPress。从用户处获取输入并使用
    get
    方法发送,没有什么错。如果用户要刷新页面,将输入保存在地址栏中也会对用户有利。