如何使用Javascript/jQuery将用户带到一个新页面以及一些变量,而不会导致URI过大的错误?

如何使用Javascript/jQuery将用户带到一个新页面以及一些变量,而不会导致URI过大的错误?,javascript,jquery,Javascript,Jquery,使用Javascript/jQuery,我需要在单击按钮时将用户带到一个新页面,并向新页面发送一组变量。现在我是这样做的: location.href=window.location.href + '/new_note?id='+$('#note_id').val()+'&note_subnotes='+encodeURIComponent(window.JSON.stringify(sub_notes)) 这可以正常工作,但问题是sub_notes是一个散列数组,它可能会变得非常大。

使用Javascript/jQuery,我需要在单击按钮时将用户带到一个新页面,并向新页面发送一组变量。现在我是这样做的:

location.href=window.location.href + '/new_note?id='+$('#note_id').val()+'&note_subnotes='+encodeURIComponent(window.JSON.stringify(sub_notes))
这可以正常工作,但问题是
sub_notes
是一个散列数组,它可能会变得非常大。如果数组中有多个哈希,则会出现以下错误:

Request-URI Too Large
WEBrick::HTTPStatus::RequestURITooLarge 

显然URI太大了。我如何做到这一点而不碰到这个问题?感谢您的阅读。

请为您的长字符串使用cookie。将数据存储到cookie中,并在下一页获取它。

将cookie用于长字符串。将数据存储到cookie中,并在下一页获取数据。

您可以使用POST或get发送数据。我想post可以处理更多的数据,它被用来上传文件和所有内容。

你可以使用post或GET发送数据。我想post可以处理更多的数据,可以用来上传文件和所有内容。

发送页面:
var form=$(“”)
.attr('action',url)
.attr('method','POST')
.append($('')
艾特先生({
“id”:“数据”,
“名称”:“数据”,
“值”:JSON.stringify(数据)
})
)
.appendTo(document.body)
.提交()
.remove();
(jQuery链接万岁)

接收页面(需要PHP):
var数据=
发送页面:
var form=$(“”)
.attr('action',url)
.attr('method','POST')
.append($('')
艾特先生({
“id”:“数据”,
“名称”:“数据”,
“值”:JSON.stringify(数据)
})
)
.appendTo(document.body)
.提交()
.remove();
(jQuery链接万岁)

接收页面(需要PHP):
var数据=


只是好奇-你是说当一个按钮被点击时…为什么不是一个普通的
帖子?@Nick Craver-它最初是一个表单帖子,但我不知道如何/如果可以将sub_notes数组添加到表单的参数中,由于它是一个Javascript对象,表单由HTML元素组成,因此您也可以通过POST发送JSON序列化字符串(并让服务器将字符串(或相关变量)放回页面)。@Marcel Korpel-感谢您的评论。你有没有可能给我一个想法/给我指出正确的方向来解决这个问题?@ben:在你的表单中添加一个
,然后
POST
将序列化的JSON作为它的值只是好奇-你是说当点击一个按钮时…为什么不是一个普通的
POST?@Nick Craver-它最初是一个表单帖子,但我无法确定如何/是否可以将sub_notes数组添加到表单的参数中,因为它是一个Javascript对象,表单由HTML元素组成。您也可以通过POST发送JSON序列化字符串(并让服务器将字符串(或相关变量)放回页面)@Marcel Korpel-谢谢你的评论。你有没有可能给我一个想法/给我指出正确的方向来解决这个问题?@ben:在你的表单中添加一个
,然后
发布序列化JSON,因为它的值Cookies的大小也是有限的。Cookies的大小也是有限的。谢谢你的回答。很抱歉请求更多帮助,但是您知道如何使用POST/GET发送javascript数组,将用户实际带到目标地址吗?我知道如何执行$.get&$.post,但是如果这些返回数据在当前页面中执行操作,您可以在$.post上执行回调,在提交数据后立即将用户带到页面,因此数据必须存储在服务器端的post中,然后在下一页从服务器检索?
GET
正是@ben所做的<如果您认为cookies不合适,那么code>POST
是一个不错的选择。但是,
POST
-ed数据不能通过javascript检索。您需要使用PHP对其进行
echo
facepalm“当然,@ben在使用get-我道歉!是的,正如@Eric所说,您需要使用PHP获取
POST
ed数据。谢谢您的回答。很抱歉请求更多帮助,但是您知道如何使用POST/GET发送javascript数组,将用户实际带到目标地址吗?我知道如何执行$.get&$.post,但是如果这些返回数据在当前页面中执行操作,您可以在$.post上执行回调,在提交数据后立即将用户带到页面,因此数据必须存储在服务器端的post中,然后在下一页从服务器检索?
GET
正是@ben所做的<如果您认为cookies不合适,那么code>POST是一个不错的选择。但是,
POST
-ed数据不能通过javascript检索。您需要使用PHP来
echo
它。*facepalm“当然@ben在使用get-我的道歉!是的,正如@Eric所说,您需要使用PHP来获取
POST
ed数据。
var form = $('<form>')
    .attr('action', url)
    .attr('method', 'POST')
    .append($('<input type="hidden">')
        .attr({
            'id': 'data',
            'name': 'data',
            'value': JSON.stringify(data)
        })
    )
    .appendTo(document.body)
    .submit()
    .remove();
var data = <?php echo @$_POST['data'] or 'null' ?>