2010-02-17 101 views
0

我有一个奇怪的问题,我不能'解决数小时后谷歌搜索。 我的web应用程序的构建方式并不是非常优化,但我现在无法对此做任何事情。ajax成功没有在Firefox中触发

我在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函数只写入萤火虫控制台。

所以这段代码运行很好,直到发生事情。不太确定它是如何发生的,但有时候当函数失败或被破坏时,它会停止工作。我认为这与ajax函数内的页面重新加载有关。

发生这种情况后,成功功能永远不会被触发。在firebug consule中,我可以看到“让我们获取XML”消息,我可以看到ajax-call是触发器并返回200或304(未修改)。但是__LOG里面的成功并没有触发也没有功能。

要使其再次工作,我必须完全重新启动Firefox,有时清空缓存。

如果我打开的是其他DOMIAN的框架内,外架的页面,再次一切工作,但我真的不能这样做,因为应用程序的应有的作用。

任何人都经历过类似的事情?另外我不会把这个问题归咎于jquery,因为我已经在旧脚本中陈述了一些模仿的东西。

感谢

恩德雷

+0

您是否尝试过其他浏览器,其效果如何? – 2010-02-17 12:04:09

+0

我只尝试过Firefox和IE。它从来没有发生在IE中,只是Firefox。 – Endre 2010-02-18 09:13:35

回答

0

这可能是由于这样的事实,你正在做在Firefox跨域请求,我相信是Firefox的默认策略禁止。显然你可以tweak the setting,但面向互联网的网站,我不认为这会飞,你将不得不寻找另一种方式。

你是否在Firebug中跟踪控制台窗口的输出?

+0

它可能与跨域请求有关,但请求页面和ajax源都位于同一个域中。它只是包含在另一个页面的框架中。它大部分时间都在工作,但有时它会停止工作......非常奇怪。 firebur控制台在ajax调用之前输出日志行,并且该调用返回200返回码。 – Endre 2010-02-17 12:32:23

+0

哇,真的。所以你会看到200的返回代码,当你在Firebug中查看调用的输出时,标记看起来像你期望的那样,或者它可能是畸形的,并且混淆了jQuery? – 2010-02-17 12:38:55

+0

那真是太奇怪了。返回的数据看起来不错,成功函数中的第一行代码是将其记录到萤火虫控制台,但它不会被触发。 我试图将golbal设置为false。我认为问题可能出现在全局Ajax事件处理程序中。 – Endre 2010-02-18 09:44:46

0

,你可以尝试把一个async: false,在你的电话。

注知道你是什么意思“的AJAX功能内页,重新加载。”

+0

我的观点是,错误并非一直存在。它有时会加入,我无法重新创建它。我“认为”它发生在页面以某种方式中断ajax调用时。 – Endre 2010-02-17 12:28:29

相关问题