【问题标题】:Is it possible to send object in url jquery是否可以在 url jquery 中发送对象
【发布时间】:2015-04-29 08:14:14
【问题描述】:
data.push({
    name: name,
    age: age,
    address: address,
    contactnumber: contactnumber

});

var url = '../reports/student.php?data='+data;
window.open(url, '_blank');

../reports/student.php?data=[object%20Object]

上面是我想发送到另一个页面的对象,以便我可以检索它并在下一页使用它来生成报告。该 url 看起来像上面的那个我不确定这是否可能,如果可能的话,我怎样才能获得对象中每个数据的值。如果不可能,请指出正确的方向任何想法都是 ap

【问题讨论】:

  • 在正文中使用 POSTdata 作为 JSON。

标签: jquery arrays url object


【解决方案1】:

如果你明确想要使用GET 请求,请使用JSON.stringify

var url = '../reports/student.php?data='+ encodeURIComponent(JSON.stringify(data));

但更好的方法是POST 请求。

你也可以使用jQuery.param():

var data = {
  name: 'yourname',
  age: 1,
}

var params = jQuery.param(data) // 'name=yourname&age=1'
var url = '../reports/student.php?'+ params;

【讨论】:

  • 如果我在发送前不对数据进行字符串化也没关系我的意思是我想在下一页中进行所有检索?我的意思是我不想在 url 中发送数据时使用 stingify 是否可以既然我已经使用 jquery 而不是 php 发送了数据,我该如何获取数据
  • 我的问题是我现在如何在第二页获得价值?
  • 有一个简单的函数可以通过JS stackoverflow.com/questions/901115/…解析get参数
  • 我应该将整个 url 传递给 data 的函数吗?
  • 获取data 参数,您可以这样调用:getParameterByName('data')
【解决方案2】:

jQuery.param():

创建适合在 URL 查询字符串或 Ajax 请求中使用的数组、普通对象或 jQuery 对象的序列化表示。如果传递了一个 jQuery 对象,它应该包含具有名称/值属性的输入元素。

该文档还指出,

如果传递的对象是Array,则必须是.serializeArray()返回格式的对象数组

所以在你的情况下:

var url = '../reports/student.php?' + jQuery.param(serializeArray(data));

要反序列化,您应该使用jQuery BBQdeparam 函数,根据cce 在这个SO 问题中的回答:The $.param( ) inverse function in JavaScript / jQuery

【讨论】:

  • 如何在第二页检索这些值?
  • 我在 url 中得到的是 ?data=undefined=
  • @Pekka 更新了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
  • 2016-05-21
  • 2012-01-09
相关资源
最近更新 更多