【问题标题】:Replace entire DOM (page) with response from $http in AngularJS用AngularJS中$http的响应替换整个DOM(页面)
【发布时间】:2015-10-04 16:00:50
【问题描述】:

我有 HTML AngualrJS 应用程序,其工作方式如下:

  1. 用户在表单上输入支付信息,表单没有设置动作属性
  2. 用户点击提交
  3. AngularJS 拦截数据、处理支付并向服务器发送请求。

这是控制器从我的 PHP 接收交易确认详细信息的地方:

this.stripeResponseHandler = function (status, response) {
...
$http ({
        method: 'POST',
        url: 'https://server/billpay/charge.php',
        data: postData  
}).then (function (response) {
        console.log (response.data);
        that.result = response.data;
        that.isSaving=1;
}, function (response) {
        console.log ("failed %s", response);
        that.isSaving=1;
})

问题:

我需要将整个现有页面(带有表单)替换为服务器返回的完整 HTML 页面(带有 CSS、HTML、JS)。

服务器返回用户可以打印的收据作为记录。

基本上我不想只在当前页面上注入服务器对 DIV(或类似)的响应,而是需要从服务器响应中重新呈现整个新页面。

我该怎么做?

谢谢!!

【问题讨论】:

  • 你可以做到,但听起来不是个好主意。考虑重定向到新页面。

标签: javascript html angularjs stripe-payments


【解决方案1】:

使用(CSS、HTML、JS)创建另一个页面,并在表单提交后使用服务器响应数据重定向到该页面。

【讨论】:

  • 当该页面的 HTML 保存在变量中时,如何在 Angular 中重定向到另一个页面?
【解决方案2】:

你可以这样做:

document.open()
document.write(that.result);
document.close();

但这在某种程度上是“自擦除代码”:您的脚本在 close 之后消失了;

【讨论】:

  • 其实这个效果很好!这正是我想要做的 - 呈现单页可打印收据。
猜你喜欢
  • 2014-01-27
  • 1970-01-01
  • 2016-02-28
  • 2014-07-25
  • 2015-07-10
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多