2016-11-02 32 views
0

我试图在我的Ionic2应用程序中集成条纹支付方法。在条纹中将圆形结构转换为JSON

当我点击我的付款按钮时,出现条纹付款框(我插入卡号,过期日期和CVC),当我点击“付款”按钮时,它会从蓝色变为绿色,如果我检查我的浏览器控制台我读这个错误:

EXCEPTION: Converting circular structure to JSONErrorHandler.handleError @ error_handler.js:47next @ application_ref.js:272schedulerFn @ async.js:82SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:74NgZone.triggerError @ ng_zone.js:278onHandleError @ ng_zone.js:257t.handleError @ polyfills.js:3e.runTask @ polyfills.js:3invoke @ polyfills.js:3 
error_handler.js:52 ORIGINAL STACKTRACE:ErrorHandler.handleError @ error_handler.js:52next @ application_ref.js:272schedulerFn @ async.js:82SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:74NgZone.triggerError @ ng_zone.js:278onHandleError @ ng_zone.js:257t.handleError @ polyfills.js:3e.runTask @ polyfills.js:3invoke @ polyfills.js:3 
error_handler.js:53 TypeError: Converting circular structure to JSON 
    at JSON.stringify (<anonymous>) 
    at RPC.sendMessage (checkout.js:2) 
    at RPC.sendMessage (checkout.js:2) 
    at checkout.js:2 
    at RPC.ready (checkout.js:2) 
    at RPC.invoke (checkout.js:2) 
    at RPC.invoke (checkout.js:2) 
    at RPC.processMessage (checkout.js:2) 
    at RPC.processMessage (checkout.js:2) 
    at RPC.message (checkout.js:2) 

我知道,我的问题是基本相同的this之一,但,7个月以来过去了,我会问你是否有解决的更好的方法这个问题自从写了被接受的答案的人以来说这种解决方法是可怕的

顺便说一句,如果我会按照他的回答,我应该替换此

const _stringify = JSON.stringify; 
JSON.stringify = function (value, ...args) { 
    if (args.length) { 
    return _stringify(value, ...args); 
    } else { 
    return _stringify(value, function (key, value) { 
     if (value && key === 'zone' && value['_zoneDelegate'] 
      && value['_zoneDelegate']['zone'] === value) { 
     return undefined; 
     } 
     return value; 
    }); 
    } 
}; 

与此:

message = JSON.stringify({ 
    method: method, 
    args: args, 
    id: id 
}); 

???

或者我应该保留两个块(一个在另一个之前)?

在此先感谢。

回答

0

这不幸仍然是唯一的答案。

你只需要包括:

const _stringify = JSON.stringify; 
JSON.stringify = function (value, ...args) { 
    if (args.length) { 
    return _stringify(value, ...args); 
    } else { 
    return _stringify(value, function (key, value) { 
     if (value && key === 'zone' && value['_zoneDelegate'] 
      && value['_zoneDelegate']['zone'] === value) { 
     return undefined; 
     } 
     return value; 
    }); 
    } 
}; 

在你的代码前面的地方在那里你启动结帐;您包含的其他代码块是问题所在的位置,但这在Checkout本身内部,因此您不必担心这一点。

相关问题