【问题标题】:How can I POST JSON to another page and get to that page?如何将 JSON POST 到另一个页面并访问该页面?
【发布时间】:2014-07-25 13:58:55
【问题描述】:

我们能否只使用 javascript(jQueryAnjularJS,无论如何,但不要使用表单)以某些 JSON 作为 POST 请求正文进入另一个页面?

意思是,我希望写一段javascript代码作为提交按钮的动作代码。它将引导我使用带有一些 JSON 数据的 POST 请求进入另一个页面。

【问题讨论】:

  • 要么用表单发布,要么在会话中存储数据
  • 显示一些代码,很难说出你在问什么。没有代码的问题不适合 SO。 SO 不是通用的“事情是如何完成的?”它是为了,“这是我尝试过的,但它不起作用”

标签: javascript jquery json angularjs post


【解决方案1】:

您可以动态创建一个隐藏表单,其中包含包含您的数据的输入,并将其提交到所需的地址

使用 jQuery 的示例:

var url = 'index.html';
var data = {
  a: 1,
  b: { a: 1, b: 2},
  c: [1, 2, 3]
};

function appendData($form, prefix, data) {
  function append(k, data) {
    if (prefix !== '') {
      appendData($form, prefix + '[' + k + ']', data[k]);
    } else {
      appendData($form, k, data[k]);
    }
  }
  if (data instanceof Object) {
    if ($.isArray(data)) {
      for (var i = 0, l = data.length; i < l; i++) {
        append(i, data);
      }
    } else {
      for (var k in data) {
        append(k, data);
      }
    }
  } else {
    var inp = $('<input type="hidden" name="' + prefix + '">').val(data);
    $form.append(inp);
  }
}
var $form = $('<form style="display:none;" action="' + url + '" method="post"/>');

appendData($form, '', data);
$('body').append($form);
$form[0].submit();

http://plnkr.co/edit/bM4oAj7TZNWfjkLVWMrY

【讨论】:

    【解决方案2】:

    如果你想在浏览器中改变物理页面,那么你必须让浏览器去做。您可以在后台使用 AJAX,但不会影响浏览器页面。

    让浏览器更改页面的最简单方法是将window.location 属性设置为新页面的url。但是请注意,您只能通过这种方式执行GET

    我建议做一个 AJAX POST,并让它返回一个 URL,你可以让浏览器显示你想要的页面。

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      如果您尝试访问预定义页面并传输数据包,则可以将数据编码到查询字符串中(如果数据量很小)。

      或者,您可以将其存储在 HTML 5 本地存储中,更改 window.location 以加载新页面,然后从本地存储中获取信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-09
        • 2021-09-30
        • 1970-01-01
        相关资源
        最近更新 更多