簡體   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