Интеграция платежной формы Square pos Card в ajax

Я новичок в интеграции квадратных платежных форм. я интегрирую форму в соответствии с документацией на https://docs.connect.squareup.com/articles/adding-payment-form. когда я встраиваю форму на отдельную страницу, она работает нормально, но когда я загружаю сценарии форм в ajax, появляется ошибка «ReferenceError: SqPaymentForm не определена ". кто-нибудь, пожалуйста, предложите мне способ встроить форму в ajax.


person Anand    schedule 06.04.2017    source источник


Ответы (1)


Проблема здесь в том, что вы, вероятно, пытаетесь запустить javascript на странице (которая имеет что-то вроде var paymentForm = new SqPaymentForm({... до загрузки внешней библиотеки.

Если вы загружаете https://js.squareup.com/v2/paymentform асинхронно, вам нужно отложить выполнение javascript на странице до тех пор, пока не загрузится внешняя библиотека. Вы можете сделать это с помощью событий onload или дождаться полной загрузки страницы (или множеством других способов, выполнить поиск по запросу «задержка javascript после асинхронности», но проще всего просто синхронно загрузить библиотеку.

person tristansokol    schedule 06.04.2017
comment
я попробовал это function loadJavaScriptSync(filePath){ var req = new XMLHttpRequest(); req.open("GET", filePath, false); // 'false': synchronous. req.send(null); var headElement = document.getElementsByTagName("head")[0]; var newScriptElement = document.createElement("script"); newScriptElement.type = "text/javascript"; newScriptElement.text = req.responseText; headElement.appendChild(newScriptElement); } loadJavaScriptSync("https://js.squareup.com/v2/paymentform");, затем позвонил var paymentForm = new SqPaymentForm, теперь в консоли сетевая ошибка. - person Anand; 07.04.2017
comment
тоже получил это Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной помощи xhr.spec.whatwg.org - person Anand; 07.04.2017
comment
То, что вы делаете, на самом деле не синхронно. Просто включите <script type="text/javascript" src="https://js.squareup.com/v2/paymentform"></script> в head своей страницы. - person tristansokol; 08.04.2017