Заполните переменную javascript, а затем загрузите скрипты

В моем приложении 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.

попробуйте переместить объявления функций за пределы $(document).ready

Velimir Tchatchevsky 24.10.2018 18:32
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы объявляете 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. Как будто он загружается, но не выполняется.

user3140169 24.10.2018 19:05

Другие вопросы по теме