繁体   English   中英

如何从 ajax 响应中执行 HTML 代码

[英]How to execute HTML code from ajax response

我正在实施 MyPos 支付网关以接受借记卡购买。 他们的 SDK 以一种奇怪的方式工作。 当我开始付款过程时,SDK 会尝试使用一个表单回显 HTML 代码,该表单将自动提交到他们的结账页面。 如果我使用普通表单提交提交订单页面,这应该不是问题,但是我在订单页面使用 ajax。 我正在通过对我的服务器的 ajax 调用来处理所有其他付款方式,因此我希望保持一致并在这里也使用 ajax。

所以基本上:

  1. 在我的订单页面,我按下“用卡付款”按钮。
  2. Javascript 将使用订单详细信息对我的服务器进行 ajax 调用,并将使用 MyPos sdk 进行购买。
  3. MyPos sdk 回显 HTML(但我使用输出缓冲区捕获它),如下所示
<body onload="document.ipcForm.submit();">
<form id="ipcForm" name="ipcForm" action="https://www.mypos.eu/vmp/checkout-test" method="post"><input type="hidden" name="IPCmethod" value="IPCPurchase">
<input type="hidden" name="IPCVersion" value="1.4">
<input type="hidden" name="IPCLanguage" value="it">
<input type="hidden" name="SID" value="000000000000010">
<input type="hidden" name="WalletNumber" value="61938166610">
<input type="hidden" name="KeyIndex" value="1">
<input type="hidden" name="Source" value="SDK_PHP_1.2.1">
<input type="hidden" name="Currency" value="EUR">
<input type="hidden" name="Amount" value="5.26">
<input type="hidden" name="OrderID" value="46057">
<input type="hidden" name="URL_OK" value="http://website.test/api/private/mypos/success-redirect">
<input type="hidden" name="URL_Cancel" value="http://website.test/api/private/mypos/cancel-redirect">
<input type="hidden" name="URL_Notify" value="http://website.test/api/private/mypos/ipc-notify">
<input type="hidden" name="Note" value="">
<input type="hidden" name="customeremail" value="testuser24@gmail.com">
<input type="hidden" name="customerphone" value="3333333333">
<input type="hidden" name="customerfirstnames" value="Test">
<input type="hidden" name="customerfamilyname" value="User">
<input type="hidden" name="customercountry" value="ITA">
<input type="hidden" name="customercity" value="Arco">
<input type="hidden" name="customerzipcode" value="38062">
<input type="hidden" name="customeraddress" value="Via Fiori 12">
<input type="hidden" name="CartItems" value="1">
<input type="hidden" name="Article_1" value="CRONO-Ex 1kg">
<input type="hidden" name="Quantity_1" value="1">
<input type="hidden" name="Price_1" value="5.26">
<input type="hidden" name="Amount_1" value="5.26">
<input type="hidden" name="Currency_1" value="EUR">
<input type="hidden" name="CardTokenRequest" value="0">
<input type="hidden" name="PaymentParametersRequired" value="1">
<input type="hidden" name="PaymentMethod" value="3">
<input type="hidden" name="Signature" value="jq7OSRfkJmyt22rquIDoxK0QB1GBFug4eUcGYyyKg08bY+d036bgJ/R49iq9L8ZMB+Sz8VBDb/QsqLtRLqIbaP2e7j1sYRaoZZDeK+E3gRuDp/yJofVjPWjK8Q1ZbaokoM9ETaBZI+6oUjUEIES9nqfMYFgH0tk3axDcHkZ8HKg=">
</form>
</body>

从技术上讲,我应该将其回显到一个页面,它会自动提交到他们的网站。 但相反,我使用输出缓冲区捕获它,并使用 JSON 响应将其发送回 javascript。

现在我如何执行这个 HTML 并让它完成它的工作? (例如,自动提交到该帖子操作网址)

您可以单独从响应中读取 Action URL,然后序列化表单并再次进行新的 Ajax 调用。

var myForm = $(response).find("#ipcForm");
var url = myForm.attr('action'); //get submit url [replace url here if desired]

$.ajax({
     type: "POST",
     url: url,
     data: form.serialize(), // serializes form input
     success: function(data){
         console.log(data);
     }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM