いくつかの関数を使って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 Uncaught ReferenceError:getUrl is not defined at 24781:143 at 24781:184
これを行うための最良の方法は何ですか?前もって感謝します!
他のJSファイルでアクセスできるように、関数はdomready関数の外にある必要があります。
// 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
Javascriptスコープを理解すると、JSのスコープを理解するのに役立ちます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加