首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery跳转菜单去掉了"?“之后的所有内容

jquery跳转菜单去掉了"?“之后的所有内容
EN

Stack Overflow用户
提问于 2012-07-12 06:35:05
回答 3查看 272关注 0票数 1

我找到了一个简单的跳转菜单。它工作得很好,直到我想让它转到一个带有"?“的页面。在url中。它去掉了"?“之后的所有内容。因此,当我尝试转到mywordpresspage/?id=1时,跳转菜单会将我带到mywordpresspage/。

我对jquery了解不多……我主要使用php。

代码如下:

代码语言:javascript
复制
<script type="text/javascript" charset="utf-8">

$(document).ready(function() {
    $('.site_quick_jump').change(function(){
        if ($(this).val() != '') {
            $('#site_quick_jump_form').attr('action', $(this).val()); // 
            $('#site_quick_jump_form').submit(); // Go!
        }
    });
}); // doc ready

</script>  


<form id="site_quick_jump_form" method="get" action="">
  Browse Survey:&nbsp; 
  <select class="site_quick_jump">
    <option></option>
    <option value="mywordpresspage/?id=1">My WordPress Page 1</option>
    <option value="mywordpresspage/?id=2">My WordPress Page 2</option>
    <option value="mywordpresspage/?id=3">My WordPress Page 3</option>
  </select>
</form> 
EN

回答 3

Stack Overflow用户

发布于 2012-07-12 06:41:41

好的,这需要在网络上快速解释参数。当您发起请求时,yuo可以通过两种方式发送参数:

  1. GET:参数作为("example.com/?foo=bar")
  2. POST:地址的一部分发送。参数是“在后台("example.com",{foo:bar})

”发送的。

当您提交请求时(即当您$('#site_quick_jump_form').submit())时,您提交的是"?“后面的所有内容在URL中作为参数。

编辑**编辑* *

一种可能的解决方案是切换到POST :),因为这似乎对OP有效,我不会详细描述其他选项,但您也可以这样做:

  • 使您的PHP代码只需查看所有参数并将它们重新组合到一个URL中
  • 使您的JS代码分离出查询字符串(window.location.search)并将其作为单独的字段发送
票数 2
EN

Stack Overflow用户

发布于 2012-07-12 06:41:57

所以我找到了答案,不知道为什么它有效,但它确实有效。我把action="get“改成了action="post”。

票数 0
EN

Stack Overflow用户

发布于 2012-07-12 08:19:48

如果您的选项中唯一更改的是querystring,您可以通过将操作硬编码到表单中并将您的选项更改为仅指定querystring值来简化此操作。

代码语言:javascript
复制
$(function () {
    $('.site_quick_jump').change(function () {
        if (this.value) {
            this.form.submit();
        }
    });
});
代码语言:javascript
复制
<form id="site_quick_jump_form" method="get" action="mywordpresspage">
    Browse Survey:
    <select class="site_quick_jump" name="id">
        <option></option>
        <option value="1">My WordPress Page 1</option>
        <option value="2">My WordPress Page 2</option>
        <option value="3">My WordPress Page 3</option>
    </select>
</form> 

说明:

当提交表单时,表单数据是通过组合表单的每个元素名称及其相应的值来创建的,用=分隔。这些名称值对中的每一个都与一个&组合在一起,形成最终的表单数据。

当使用method="post"提交表单时,这些数据被填充到http请求的正文中。如果用户随后尝试刷新页面,他们将收到一条警告,告知他们即将重新提交表单。如果用户单击back按钮返回页面,他们将收到页面已过期的警告。您不希望您的用户收到这些警告。

但是,当使用method="get"提交表单时,表单数据会附加到?之后。没有要处理的警告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11442549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档