0

많은 코드가 포함 된 큰 프로젝트를 작성하려고합니다. 그래서 다른 파일에서 기능을 분리하려고합니다.jQuery 아약스 호출에서 함수를 다시 시작할 수있는 표준 방법이 있습니까?

첫 번째 파일 인 dataJS는 JSON 파일에서 데이터를 가져 오기 위해 AJAX 호출을 작성합니다. 두 번째 파일 인 showJS dataJS 파일에서 가져온 데이터를 표시하려고합니다. 그것을 구현에 올 때

, 내가 AJAX 호출이 더 이상 시간이 걸립니다 나는 순서 dataJS 및 showJS을 포함하더라도 실현, showJS 여전히 널 데이터

그러므로 내가 함수라는 continueFromDataJS를 만든 얻을 것이다()에서 showJS 파일 및 AJAX 성공 함수 끝에 continueFromDataJS()를 호출하십시오.

나는 그것이 다소 makedo 해결책이라고 생각합니다. 그것을 할 수있는 표준 방법이 있습니까?

또한 내 Visual Studio의 모든 인텔리 센스가 사라졌습니다. 별도의 파일에도 불구하고 Visual Studio에서 데이터를 인텔리 센스로 만들 수있는 방법이 있습니까?

나는이 코드 편의를 위해

에게 있습니다 후속 질문 를 추가하는 방법을 모른다, 당신이

+0

그냥 설명하는 대신 몇 가지 코드를 보여줄 수 있습니까? 코드가 어떻게로드되고, 언제/어떻게 실행되고 있는지, 런타임 값은 무엇입니까? – David

답변

0

죄송 감사 나는 일부 파일 이름을 변경하고 만 중 일부 참여한다. 그게 내 인텔리의 질문에 대답하는 것을 잊지 마세요

var planets = []; 
var jsonData = null; 

$(function() { 

$.getJSON("Scripts/planetData.js", function (data) { 
    //planets[0] = new planet("uranus", "career", 45, 700, 400, 0.1, 5, 3); 
    jsonData = data; 
    for (var i = 0; i < data.planets.length; i++) { 

     var curPlanet = data.planets[i]; 

     planets[i] = new planet(curPlanet.graphic, i, curPlanet.field, curPlanet.planetInitialAngle, curPlanet.distanceFromStar, curPlanet.planetRadius, curPlanet.planetRevolvingSpeed, curPlanet.planetRotationSpeed, curPlanet.contents.length); 

     $("#result").append("<p>" + curPlanet.graphic + " " + curPlanet.field + " " + curPlanet.planetInitialAngle + " " + curPlanet.distanceFromStar + " " + curPlanet.planetRadius + " " + curPlanet.planetRevolvingSpeed + " " + curPlanet.planetRotationSpeed + " " + curPlanet.contents.length + "</p>"); 

    } 


    callDisplayScript(); //**continue from showJS.js file is that the way to do this?** 

    }); 

}); 
// more functions below in dataJS.js 

showJS.js

function callDisplayScript() { **// this is the ugly part. What's the proper way to do it?** 
    $("#display #close").click(function() { 
     $("#display").fadeOut('slow'); 
    }); 
    $article = $("#display article"); 
    $article.empty(); 
    var data = jsonData.planets[pID].contents; // **this line won't get jsonData if it's out this curly brace.** 

    for (var i = 0; i < data.length; i++) { 
     $article.append(data[i].title); 
     $article.append(data[i].content); 
    } 

    $("#display").fadeIn('slow'); 
}; 

HTML에서 dataJS.js에서

코드를

코드를 도움이되기를 바랍니다. 나는 datajs.js에서 자동으로 힌트 행성을 원하고 jsonData는 datajs.js에 선언했다. 가능합니까?