有没有更标准的方法可以从 jQuery ajax 调用中恢复功能?
Posted
技术标签:
【中文标题】有没有更标准的方法可以从 jQuery ajax 调用中恢复功能?【英文标题】:is there any more standard way to resume function from jQuery ajax call? 【发布时间】:2013-02-18 15:56:02 【问题描述】:我正在尝试编写一个涉及大量代码的大型项目。这就是为什么我想将不同文件的功能分开。
第一个文件 dataJS,我通过 AJAX 调用从 JSON 文件中获取数据。 第二个文件,showJS 我想显示从dataJS文件中获取的数据。
在实现方面,我意识到AJAX调用需要更长的时间,即使我按顺序包含dataJS和showJS,showJS仍然会得到一个空数据
因此我在 showJS 文件中创建了一个名为 continueFromDataJS() 的函数 并在 AJAX success 函数结束时调用 continueFromDataJS()。
我认为这是一个相当勉强的解决方案。有什么标准的方法吗?
此外,我的 Visual Studio 中的所有智能感知都消失了。尽管有单独的文件,有什么方法可以让 Visual Studio 从 dataJS 中获取智能感知?
谢谢
【问题讨论】:
你能给我们展示一些代码而不是仅仅描述它吗?代码如何加载、如何/何时执行、运行时值是什么等。 【参考方案1】:抱歉,我不知道如何添加后续问题 这是代码
为简单起见,我重命名了一些文件,并且只提取了其中的一部分。希望有帮助
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 中自动提示在 datajs.js 中声明的行星和 jsonData 有可能吗?
【讨论】:
以上是关于有没有更标准的方法可以从 jQuery ajax 调用中恢复功能?的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种简单的方法可以将 Ajax 更改为 WebSocket?