0

我想寫一個涉及很多代碼的大項目。這就是爲什麼我想要將功能與不同文件分開的原因。有沒有更多的標準方式從jQuery ajax調用恢復功能?

第一個文件dataJS,我做了一個AJAX調用來從JSON文件中獲取數據。 第二個文件,showJS我想顯示從dataJS文件中獲取的數據。

當談到執行,我意識到AJAX調用需要更長的時間,即使我包括爲了dataJS和showJS,showJS仍然會得到一個空數據

所以我做了一個函數調用continueFromDataJS()在showJS文件 並調用continueFromDataJS()結束AJAX 成功函數。

我認爲這是一個相當makedo的解決方案。有沒有標準的方法來做到這一點?

此外,我的Visual Studio中的所有intellisense都消失了。儘管單獨的文件,有沒有辦法讓visual studio從dataJS獲得智能感知?

謝謝

+0

你能告訴我們一些代碼而不是僅僅描述它嗎?代碼如何加載,如何/何時執行,運行時值是什麼等等。 – David 2013-03-04 14:20:46

回答

0

對不起,我不知道如何添加一個跟進的問題 這是代碼

爲簡單起見,我重新命名了一些文件,只需要一些部分出來。希望幫助

代碼的HTML dataJS.js

代碼

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'); 
}; 

不要忘記回答我的問題,智能感知。我想在datajs.js中自動提示planets和jsonData在datajs.js中聲明 是否有可能?