В моем приложении MVC я пытаюсь заполнить две переменные javascript перед загрузкой скрипта. Но я продолжаю получать сообщение об ошибке, что мои переменные не установлены до загрузки файла javascript. Я ходил кругами, пытаясь понять это.
<script type = "text/javascript">
$(document).ready(function () {
var applicationId = "@Constants.SquareUpPaymentInfo.AppID";
var locationId = "@Constants.SquareUpPaymentInfo.LocationID";
jQuery.getScript('https://js.squareup.com/v2/paymentform')
.done(function () {
jQuery.getScript('@Url.Content("~/Content/JS/sqpaymentform.js")')
.fail(function () {
alert('Failed');
})
})
.fail(
function () {
alert('There was a connection issue for the payment form library. ');
});
});
</script>
Sqpaymentform.js загружается, но для него требуется установить applicationID и locationID, но он думает, что они не установлены по какой-то причине, но я легко вижу, что они установлены на экране разработчика Chrome.

Вы объявляете applicationId и locationId как локальные переменные. Сценарию необходимо, чтобы они были глобальными переменными, поэтому объявите их вне функции.
<script type = "text/javascript">
var applicationId = "@Constants.SquareUpPaymentInfo.AppID";
var locationId = "@Constants.SquareUpPaymentInfo.LocationID";
$(document).ready(function() {
jQuery.getScript('https://js.squareup.com/v2/paymentform')
.done(function() {
jQuery.getScript('@Url.Content("~/Content/JS/sqpaymentform.js")')
.fail(function() {
alert('Failed');
})
})
.fail(
function() {
alert('There was a connection issue for the payment form library. ');
});
});
</script>
Кажется, это итерация, которую я не пробовал. Бесконечно благодарен. Теперь мне просто нужно понять, почему библиотека платежных форм больше не выполняет свою задачу и не помещает назначенные входные данные в iframe. Как будто он загружается, но не выполняется.
попробуйте переместить объявления функций за пределы
$(document).ready