나는 현재 AJAX가 작동하는 PHP 파일을 불러 가지고, 그 다음입니다 : 하나의 자바 스크립트 내에서 작동IIFE를 사용하는 AJAX 호출? 되는 .done가 일반 함수와 동일하게 작동시킬 수없는 것은
//Load map from database
function getMap(){
return $.ajax({
url: "getMap.php",
type: "POST",
dataType: 'JSON',
});
};
getMap().done(function(r) {
if (r) {
loadedMap(JSON.parse(r.mapArray), JSON.parse(r.mapProperties)); //call loadedMap(r) if loading a map from DB
} else {
console.log("No data");
}
}).fail(function(x) {
console.log("error");
});
r.mapArray 및 r.mapProperties를 내 주요 loadedMap 함수에 성공적으로 전달하는 파일.
저는 IIFE 자바 스크립트 모듈 모델에 대해 배우려고 노력 중이며, 제 작품을 별도의 파일로 나눕니다.
(function() {
// let's get our map
var gameMap = mapGen.getMap().done();
console.log(gameMap);
})();
및 mapGen.js :
var mapGen = function() {
return {
getMap: function() {
return $.ajax({
url: "getMap.php",
type: "POST",
dataType: 'JSON',
});
}
};
}()
내가 (gameMap)를 CONSOLE.LOG 경우에, 나는 내 데이터로에서 responseText JSON 객체를 참조
그래서, 나는 현재 main.js가 . 나는 그것에 접근 할 수없는 것 같습니다. console.log (gameMap.responseText)가 정의되지 않았습니다. gameMap.responseJSON도 마찬가지입니다 (콘솔에 두 가지가 있지만).
당신은 여분의 기능을했습니다 (r)하지만 그 트릭을! 내 주요 질문은 : 내 목표가 기능을 다른 JS 파일로 분리하는 것입니다.하지만 모든 JS 파일과 함수 내에서 해당 AJAX 데이터에 대한 액세스가 필요합니다 ... mapGen을 호출해야합니다. getMap을 사용할 때마다 필요한 모든 함수를 AJAX 데이터의 매개 변수로 전달할 수 있습니다. 흠. 전역 데이터 객체가 필요한 경우 기능을 분리하기가 어려워 보입니다. 답을 고맙게 생각합니다. 나는 이것이 코멘트가 없었던 시간 때문에 길을 잃을 것이라고 생각했다. –
나는 여분의 팸을 수정하기 위해 편집을했다. 당신이 찾고있는 것을 얻기 위해 이것을'initMap (콜백)'과'getMap()'의 두 가지 연산으로 나눌 수 있습니다. 그런 다음 initMap은 AJAX 요청의 결과를 저장하고 콜백을 실행할 수 있으므로 코드에 이제 맵 데이터가 있습니다. 예제의 jsfiddle. 참고 : AJAX 호출은 올바른 경로가 없기 때문에 오류가 발생합니다. [예를 들어 피들] (http://jsfiddle.net/2fDL7/) –