奇怪的JavaScript错误,由语法,Cytoscape Web或jQuery引起
Bizarre JavaScript bug, caused either by syntax, Cytoscape Web, or jQuery
我正在使用CytoscapeWeb编写一个小型Web应用程序。它下载一个包含图形的 XML 文件,并显示它。我遇到了一个问题,即使已知该文件是合理的,它也不会显示图形(而是显示空白图形)。经过几天的搜索我的代码无济于事,我开始修改教程提供的示例代码以重现该问题。
此代码有效:
function get_network(filename)
{
var output = "";
$.ajax({url: filename, type: "GET", dataType: "text", success: function(result) { output = result; } });
alert(filename);
alert(output);
return output;
}
并且此代码不会:
function get_network(filename)
{
var output = "";
$.ajax({url: filename, type: "GET", dataType: "text", success: function(result) { output = result; } });
//alert(filename);
//alert(output);
return output;
}
唯一的区别是两个 alert() 语句被注释掉了。当只有第一条语句(警报(文件名);)删除,则警告框显示空字符串。因此,空白图似乎是由未正确设置输出变量的问题引起的。
我已经在Firefox和Internet Explorer中对此进行了测试。如果有一个警报语句打印字符串"ASDFSADF"而不是输出变量,则它有效。然而,有趣的是,不使用 alert() 语句的代码(例如 'var junk = "ASDFSADF")不起作用。
所以在我看来有三种可能性:
- 我犯了某种语法或逻辑错误,这使得解析的行数很重要
- Cytoscape Web正在以我无法想象的方式引起问题
- jQuery没有调用"成功"函数
开始怀疑这个问题超出了我的专业知识,并且是由我没有考虑过的事情引起的。
然而,语法错误可能在哪里超出了我的范围。我搜索了高低。有没有人看到这样的事情,或者知道正在发生?
非常感谢您的帮助。
完整代码:
http://pastebin.com/rvcV3LFLXML 文件:http://pastebin.com/HCyuKQnx
警报时未设置输出变量,因为 AJAX 调用是异步的(AJAX 中的 A 用于异步)。
在 AJAX 调用完成后需要执行的任何操作都需要作为回调传递。
因此,如果您的代码是这样的:
var graph = get_network(filename);
draw(graph);
您需要将get_network更改为:
function get_network(filename,callback)
{
var output = "";
$.ajax({url: filename, type: "GET", dataType: "text", success: function(result) {
callback(result);
}
然后调用代码将是
get_network(filename,draw);
其中 draw 仍然是第一个示例中的函数
警报停止执行线程的时间足够长,以便返回响应。如果您的服务器花了 10 秒才做出响应,而您在 5 秒后关闭了警报,则它将无法正常工作。
jQuery ajax 函数采用回调函数不仅仅是为了好玩而使代码更丑陋,它采用回调函数是因为执行是异步的,并且响应仅保证在回调中可用。
在成功回调函数中运行需要运行的任何代码,具体取决于响应。
您已经使用 window.onload = function(){}
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 在Web应用程序中使用Highcharts javascript
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- Selenium Web驱动程序和javascript
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- 在调用speak之前预加载Web Speech API
- 如何在visualstudio中调试web api时编辑javascript文件
- 是否存在React Native“;WEB代码安全防护”;
- 如何在Ionic Android中将Javascript注入到web视图中
- 将复杂对象从angular js传递到web api,它总是返回404
- 基于api密钥的NodeJS web服务
- 将下载链接从web浏览器传递给第三方应用程序
- 基于Web的JS调试库
- 使用javascript在客户端上使用Web服务
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 从Javascript连接到SOAP Web服务
- 自定义HTML元素属性未显示-Web组件
- 奇怪的JavaScript错误,由语法,Cytoscape Web或jQuery引起