【问题标题】:Send JSON object to new page with jQuery使用 jQuery 将 JSON 对象发送到新页面
【发布时间】:2012-06-13 13:52:57
【问题描述】:

当用户单击我在页面上的谷歌地图上放置的标记时,我正在尝试将 JSON 数据(人口统计数据)发送到新页面(在同一目录中)。 我现在正在使用 jquery-ui-map 插件,标记和单击事件工作正常,但正如您在代码中看到的那样,我正在尝试将 JSON 对象传输到下一页(demo-data.html) .我尝试使用 $.ajax 但遇到了 CORS 问题。

所以我的问题是,如何将该 JSON 数组发送到下一页,然后在加载下一页 (demo-data.html) 时检索它,以便将文本放置到适当的位置?

PS - 我无法使用服务器端脚本

谢谢!

$(document).bind('pageshow', function () {
  var mapdata = { destination: new google.maps.LatLng(59.3327881, 18.064488100000062) };
  var demographics =
  {
    city: 'Stockholm',
    county: '',
    state: 'Germany',
    lat: 59.3327881,
    long: 18.064488100000062,
    type: 'Standard',
    population: 1000000,
    housing: 800000,
    income: 50000,
    landarea: 1000000,
    waterarea:10000,
    decomissioned: 'No',
    militarycodes: ''
  };

  $('h1').text('Stockholm, Germany');

  $('#map_canvas').gmap(
    {
        'center' : mapdata.destination,
        'zoom' : 12
    })
    .bind('init', function(evt, map) {
        $('#map_canvas').gmap('addMarker',
            {
                'position' : map.getCenter(),
                'animation' : google.maps.Animation.DROP
            }, function(map, marker) {
                $(marker).click(function() {

                    $.ajax({
                        url: 'demo-data.html',
                        type: 'POST',
                        data: JSON.stringify(demographics),
                        contentType: 'application/json; charset=utf-8',
                        dataType: 'json',
                        async: false,
                        success: function(msg) {
                            alert(msg);
                        }
                    });
                });
            });
      });
});

【问题讨论】:

  • 你用数据类型 jsonp 试过了吗?
  • @frictionlesspulley 不,我没有,我仍然不明白 json 和 jsonp 之间的区别,所以我想我应该查一下。

标签: jquery ajax json post get


【解决方案1】:

我首先想到的是将 JSON 对象保存在 cookie 中,并在跳转后在下一页检索它。

jquery save json data object in cookie

【讨论】:

  • 谢谢您,我想我会使用 URL 参数,但我以前从未使用过 cookie,而且该链接看起来是学习一些新东西的好地方。
  • 我自己也没有经常使用它们,但这个答案似乎让它看起来很容易:) 祝你好运!
【解决方案2】:

我会通过URL parameters传递所有内容。

【讨论】:

  • 我正要提出类似的建议,将 Json 字符串编码为 Base64 字符串,然后将其传递给其他页面进行解码。
  • 记住浏览器特定的最大 URL 长度。如果您传递的数据没有设定可预测的限制,您可能会遇到麻烦。对于 IE,请参阅support.microsoft.com/kb/208427 了解详细信息。从那里引用:Microsoft Internet Explorer has a maximum uniform resource locator (URL) length of 2,083 characters. Internet Explorer also has a maximum path length of 2,048 characters. This limit applies to both POST request and GET request URLs. 对于其他浏览器,我相信他们也在他们的相应网站上发布了它。
  • @Gavin:很好地提到了编码。这也会缩短您通过 URL 发送的内容的长度。
  • @sczizzo 我会使用 GET 请求访问我想要加载的页面吗?
  • @JLaw - 如果您对 Json'd 字符串进行 Base64 编码,则可以通过单个 GET 参数传递它。在第二页上,您可以使用 Javascript 解码 Base64 字符串并转换回 Object。唯一的问题是您不能使用 Ajax(CORS - 假设它是不同域上的页面),因此您需要打开一个新窗口,或使用 window.location.href 更改当前页面。
猜你喜欢
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 2010-11-11
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2012-06-14
相关资源
最近更新 更多