Internet Explorer中的Jquery:查找图像问题(适用于FF和Chrome)

Internet Explorer中的Jquery:查找图像问题(适用于FF和Chrome),jquery,internet-explorer,Jquery,Internet Explorer,在Firefox和Chrome中,这很好。但在Internet Explorer中,变量标题和描述将获得值“”。缩略图未定义。我知道它在IE中获取数据。getflickreasy.php从flickr检索rss 我不认为IE缓存有问题,因为它在清除后是一样的。可能是$(这个)有问题。在IE中查找 您可以在以下位置查看正在运行的代码: 编辑:使用$。获取它将检索数据,但Internet Explorer无法处理它。 使用$.ajax,它目前根本无法检索数据 编辑:我更改了php获取图像的url:

在Firefox和Chrome中,这很好。但在Internet Explorer中,变量标题和描述将获得值“”。缩略图未定义。我知道它在IE中获取数据。getflickreasy.php从flickr检索rss

我不认为IE缓存有问题,因为它在清除后是一样的。可能是
$(这个)有问题。在IE中查找

您可以在以下位置查看正在运行的代码:

编辑:使用$。获取它将检索数据,但Internet Explorer无法处理它。 使用$.ajax,它目前根本无法检索数据

编辑:我更改了php获取图像的url:
http://api.flickr.com/services/feeds/photos_public.gne?id=42980910@N02&lang=en-us&format=xml

而不是:

http://api.flickr.com/services/feeds/photos_public.gne?id=42980910@N02&lang=en-us&format=rss_200

我添加了
标题(“内容类型:text/xml”)到php文件。我认为它现在应该得到xml了,对吗?菲德勒说:

$.get("js/getflickreasy.php", function(data)
{
  $(data).find("item").each(function()
  {
    var title = $(this).find("title").text();
    var description = $(this).find("description").text();
    var thumbnail = $(description).find("img").attr("src");
  }
  );
}
);
HTTP/1.1200ok 日期:2010年11月17日星期三20:45:43 GMT 服务器:Apache X-Powered-By:PHP/5.2.13 连接:关闭 内容类型:text/xml 内容长度:25878
但还是一样的问题(至少我这么认为)。

嗯。。。您可能需要将数据类型设置为XML。不要使用
$.get()
尝试
$.ajax()

问题很可能是服务器的响应

使用当前配置(使用
$.ajax
方法的配置),IE将收到响应。我使用一个名为的工具对此进行了验证

问题是,浏览器正在发送以下标题:

$.ajax({
    type: "GET",
    url: "js/getflickreasy.php",
    dataType: "xml",
    success: function(data) {
        $(data).find("item").each(function() {
            var item = $(this), title, description, thumbnail;

            title = item.find("title").text();
            description = item.find("description").text();
            thumbnail = item.find("img").attr("src");
        });
    }
});
但来自服务器的响应是:

Accept: application/xml, text/xml
在让服务器返回有效的XML头之前,IE和
$.ajax
方法将继续失败


这是我所认为的几次正确的事情之一!其他浏览器没有失败这一事实令人恼火。他们应该这样做。这样你就不会觉得这是IE特有的问题了。但是,我离题了。

我用IE8访问了您的页面,您拥有的数据变量肯定会返回您想要的XML。因此,信息已准备好进行解析,只是IE对其不友好

除了上面提到的@Stephen之外,我倾向于使用一些更健壮的东西。确保它能在各种版本的IE以及所有非EI浏览器中工作。下面的方法还允许我将成功和错误事件传递给其他函数进行处理

Content-Type: text/html

IE比Firefox和Chrome更注重代码的正确性,尤其是通过AJAX接收的HTML/XML


如果FF和Chrome正在处理IE没有处理的AJAX请求,通常是由于返回的HTML/XML中的解析错误。

此代码不起作用。它不会进入成功:函数(数据){}“它不会进入”是什么意思?你能解释一下吗?它不会进入那个函数,所以我说数据没有成功加载,这就是为什么它没有进入成功:啊哈!因此,您的脚本似乎没有返回有效的xml。请尝试将其添加到脚本
标题的顶部(“内容类型:text/xml”)我激活了console.log并检索到以下内容:未捕获引用错误:未定义changeTitle出现问题:OK | parsererror | undefined“出现问题:OK | parsererror | undefined”是我对错误事件的输出(如console.log行中所示),但changeTitle是通过代码中的某个地方引发的错误。
Content-Type: text/html
// this method of doing the ajax call is a little beefier than required. 
//  - allows us to test local XML files as well with IE
//  - allows us to pass additional arguments with the success / error functions.
$.ajax({
    type: "GET",
    url: your.url.here,
    cache: true,    // or set to false
    dataType: ($.browser.msie) ? "text/xml" : "xml",
    success: function(data) {
            var xml;
            if (typeof data == "string") {
                xml = new ActiveXObject("Microsoft.XMLDOM");
                xml.async = false;
                xml.loadXML(data);
            } else {
                xml = data;
            }
            functionToHandleData(xml);
    },
    error: function(xhr, textStatus, errorThrown) {
            //console.log('Problem Occured: \n' + xhr.statusText + " | " + textStatus + " | " + errorThrown);
            functionToHandleError();
    }
});