我有一个奇怪的问题,我不能在谷歌搜索后解决。 构建我的Web应用程序的方式不是很优化,但我现在无法做任何事情。
我在C#中创建了一个用户控件。此用户控件由位于iframe内的aspx页面托管,此页面再次位于框架内。 (不是最佳的)。
但我认为唯一重要的是外框。托管页面位于另一个域而不是其他页面/部件。
这个框架里面是我的代码。我有一个jquery脚本,当它在服务器上检测到新数据时更新数据。 要获取数据,我使用jquery-ajax。
var indexURL = "/data/indexProxy.aspx";
__LOG("Lets get the XML");
$.ajax({
url: indexURL,
type: 'GET',
dataType: 'xml',
contentType: "text/xml; charset=\"utf-8\"",
error: function(request, error) {
alert('Error loading XML document' + request + error);
},
success: function(xml) {
__LOG("ajax success...");
OnSucceededXml(xml);
}
});
__LOG函数只是写入firebug控制台。
因此,此代码运行良好,直到发生某些事情。不太确定它是如何发生的,但有时当功能失败或被中断时,它就会停止工作。我认为这与ajax函数中的页面重新加载有关。
发生这种情况后,成功函数永远不会被触发。在firebug consule中,我可以看到“让我们获取XML”消息,我可以看到ajax-call是触发器并返回200或304(未修改)。但是__LOG里面的成功并不是触发也不是功能。
为了让它再次运行,我必须完全重启firefox,有时会清空缓存。
如果我在框架外打开另一个domian框架内的页面,一切都会再次起作用,但我不能真正做到这一点作为应用程序的一部分。
有人经历过类似的事吗?此外,我并不认为这与jquery相关,因为我在旧脚本中已经表达了一些类似的东西。
由于
恩德雷
答案 0 :(得分:0)
这可能是因为您在Firefox中执行跨域请求,我认为这是Firefox的默认策略禁止的。显然你可以tweak the setting,但对于面向互联网的网站,我认为不会飞,而你必须找到另一种方式。
您是否跟踪过Firebug中控制台窗口的输出?
答案 1 :(得分:0)
您可以尝试在通话中加async: false,
。
请注意“ajax函数中的页面重新加载”的含义。