提交空GET表单时如何去除URL末尾的?符号
解决GET提交空表单时URL末尾带
?的问题 这个问题我之前也碰到过,其实核心原因是浏览器在处理GET方法的空表单提交时,会自动在URL末尾加上?来标识空的查询字符串。给你几个简单的解决办法:
最直接的方案:跳过表单提交,直接跳转
既然你的表单没有任何需要提交的数据,完全没必要用表单来触发跳转,直接用window.open打开目标URL就行,这样就不会出现多余的?了:window.open('viewApp/'+appId, '_blank');如果必须保留表单逻辑:提前判断并调整提交方式
要是你因为某些原因必须用表单来实现,那可以在提交前检查表单里有没有可提交的字段(比如input、select等),如果是空表单,就直接跳转,否则再提交表单:// 创建表单 const $form = $('<form/>') .attr("target","_blank") .attr({ 'action': 'viewApp/'+appId, 'method': 'get', 'id': 'replacer' }); $('body').append($form); // 检查表单是否有可提交的控件 if ($form.find('input, select, textarea').length === 0) { // 空表单,直接跳转 window.open($form.attr('action'), '_blank'); $form.remove(); // 清理临时创建的表单 } else { // 有表单字段,正常提交 $form.submit(); }后端兜底方案(可选)
如果你能修改后端逻辑,也可以让后端接收请求时自动去除URL末尾的?,不过前端处理显然更高效直接。
内容的提问来源于stack exchange,提问作者Nolesh
相关产品推荐
相关产品推荐

