Это вопрос о передовых методах выполнения вызова JavaScript, который генерирует стандартную кнопку «Подключиться к QuickBooks» (для установления соединения с QuickBooks Harmony через REST API Intuit v3).
Если бы я следовал примеру Intuit, я бы:
- Ссылка https://appcenter.intuit.com/Content/IA/intuit.ipp.anywhere.js в теге скрипта.
- Поместите набор тегов ‹ipp:connectToIntuit›‹/ipp:connectToIntuit› там, где я хочу, чтобы отображалась кнопка «Подключиться к QuickBooks».
- Скрестим пальцы и будем надеяться, что intuit.ipp.anywhere.js
не перенаправляет на сообщение о простое, опять жевсе еще существует - Позвоните мне в intuit.ipp.anywhere.setup()
- См. кнопку «Подключиться к QuickBooks».
... который работает (для многих значений "работает"), но выглядит довольно хрупким:
- Если intuit.ipp.anywhere.js перенаправляет на сообщение о простое (читай: не на JavaScript) или недоступен по иным причинам, я получаю сообщение об ошибке скрипта.
- Если я получаю ошибку сценария (или что-то еще идет не так с копией сценария Intuit), пользователь не получает никакой обратной связи, а просто пустое место на месте кнопки «Подключиться к QuickBooks».
Чтобы сделать все это немного более устойчивым, я объединяю ссылку на intuit.ipp.anywhere.js и вызов intuit.ipp.anywhere.setup() в вызов JQuery .ajax():
$.ajax({
url: 'https://appcenter.intuit.com/Content/IA/intuit.ipp.anywhere.js',
type: 'GET',
dataType: 'script',
timeout: 4000,
success: function(response) {
if (typeof intuit !== 'undefined') {
intuit.ipp.anywhere.setup({
menuProxy: 'MYMENUPROXYURL.aspx',
grantUrl: 'MYGRANTURL.aspx'
});
}
},
error: function(x, t, m) {
// show some friendly error message about Intuit downtime
}
});
... который также работает (еще для нескольких значений «работает»):
- Мой вызов setup() заключен внутри обработчика успеха (и дополнительной проверки существования объекта intuit), поэтому я не должен получить ошибку сценария, если что-то пойдет не так.
- Если GET скрипта Intuit истечет (через 4000 мс) или вернет что-то, что не является скриптом, я покажу пользователю понятное сообщение об ошибке.
Кто-нибудь еще использовал другой подход? А Intuit снова в сети?
.getScript
, которая по умолчанию устанавливает для кеша значение «false». С сообщением Мачете он мог добавить явныйcache: false
к.ajax
параметрам. - person dthagard   schedule 14.03.2014cache: false
не требуется для параметров.ajax
, так какdataType: script
по умолчанию значение кэша будет равно false (ссылка) - person Armin Sadeghi   schedule 12.02.2015