我找到了一个简单的跳转菜单。它工作得很好,直到我想让它转到一个带有"?“的页面。在url中。它去掉了"?“之后的所有内容。因此,当我尝试转到mywordpresspage/?id=1时,跳转菜单会将我带到mywordpresspage/。
我对jquery了解不多……我主要使用php。
代码如下:
<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:
<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> 发布于 2012-07-12 06:41:41
好的,这需要在网络上快速解释参数。当您发起请求时,yuo可以通过两种方式发送参数:
”发送的。
当您提交请求时(即当您$('#site_quick_jump_form').submit())时,您提交的是"?“后面的所有内容在URL中作为参数。
编辑**编辑* *
一种可能的解决方案是切换到POST :),因为这似乎对OP有效,我不会详细描述其他选项,但您也可以这样做:
发布于 2012-07-12 06:41:57
所以我找到了答案,不知道为什么它有效,但它确实有效。我把action="get“改成了action="post”。
发布于 2012-07-12 08:19:48
如果您的选项中唯一更改的是querystring,您可以通过将操作硬编码到表单中并将您的选项更改为仅指定querystring值来简化此操作。
$(function () {
$('.site_quick_jump').change(function () {
if (this.value) {
this.form.submit();
}
});
});<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"提交表单时,表单数据会附加到?之后。没有要处理的警告。
https://stackoverflow.com/questions/11442549
复制相似问题