我有一个现有的遗留aspx页面加载外部JS文件。我正在添加功能,并在页面上的脚本块中添加了异步函数。外部JS文件已被修改为调用async函数。无论我在页面的哪个位置加载外部脚本,它仍然会继续抱怨没有定义页面函数。我真的卡住了!由于
更新:
///loading scripts
<script src="../_scripts/jquery-3.4.1.min.js"></script>
<script src="../_scripts/bootstrap-4.6.0.min.js"></script>
<script src="../_scripts/jquery.datatables.min.js"></script>
<script src="../_scripts/datatables.select.min.js"></script>
//page function
<script type="text/javascript">
$(document).ready(function () {
async function providerPopUp() {
await $.ajax({
url: '../Provider/PreCert_PrvSearch.aspx',
method: 'get',
data: { typeOfSearch: typeOfSearch, coIdNbr: coIdNbr },
dataType: 'json',
success: function (response) {.......
//load external script after page script
<script src="../_scripts/PreCert_Create.js"></script>
//call to page function added to external js file
function Pop_Modal_Window_NPI (){
providerPopUp()
.then((result) => {
console.log('result: ' + result);
retPrv = result;
})
外部JS文件函数Pop_Modal_Window_NPI触发文本框的模糊
Result is Uncaught ReferenceError: providerPopUp is undefined在Pop_Modal_Window_NPI (PreCert_Create.js:169)在HTMLInputElement。onblur (PreCert_Create.aspx ?……参数)
Pop_Modal_Window_NPI()调用函数providerPopUp(),但后者在一个外壳内,因此不在调用的范围内。
您可以通过将函数添加到窗口命名空间来解决这个问题:
window.providerPopUp = async function() {
...
};
然后Pop_Modal_Window_NPI内部的调用变成:
window.providerPopUp()
(你甚至不需要在函数调用前加上前缀window,我只是为了保持一致性)