我试图在js中创建一个带有某些功能的主文件。 我想从我的ajax调用中的另一个js文件访问geturl函数,以便在我的url中发布。 我确实喜欢这个 Ajax文件:
**<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="js/main.js"></script>
<script type="text/javascript">
(() => {
'use strict'
$.ajax({
url: getUrl('index','postData'),
dataType: 'json',
// query string parameters to append
data: {
id: getId(),
},
type: "POST",
success: (data) => {
// success! we got the data!
let card_markup = ''
data.forEach((post) => {
card_markup += card(post);
})
$('.js-post').append(card_markup);
}
})
})()**
主档
**$( document ).ready(function() {
'use strict'
$('.back').click(function() { history.go(-1); });
function getUrl (ctlr, act) {
var baseurl = 'http://localhost:5002/';
return baseurl+'/'+ctlr+'/'+act;
}
function getId ()
{
var url = $(location).attr('href');
var parts = url.split("/");
var last_part = parts[parts.length-1];
return last_part;
}
});**
我收到了这个错误: 24781:143未捕获的ReferenceError:未定义getUrl 在24781:143 在24781:184
这样做的最佳方法是什么? 提前谢谢!
答案 0 :(得分:3)
你的函数应该在dom ready函数之外,可以在其他JS文件中访问:
// Should be outside dom ready scope
function getUrl (ctlr, act) {
var baseurl = 'http://localhost:5002/';
return baseurl+'/'+ctlr+'/'+act;
}
function getId ()
{
var url = $(location).attr('href');
var parts = url.split("/");
var last_part = parts[parts.length-1];
return last_part;
}
$( document ).ready(function() { // <--- Start scope of DOM ready
'use strict'
$('.back').click(function() { history.go(-1); });
// function inside here won't be accessible
}); // <--- End scope of DOM ready
例如:
function test_function() {
function inner_scope() {
// some definition
}
}
inner_scope(); // will give Uncaught ReferenceError
Understanding Javascript Scope将帮助您了解JS中的范围。