Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么IE9在访问通过AJAX加载的XML数据时出错(脚本438)?_Javascript_Jquery_Ajax_Internet Explorer 9 - Fatal编程技术网

Javascript 为什么IE9在访问通过AJAX加载的XML数据时出错(脚本438)?

Javascript 为什么IE9在访问通过AJAX加载的XML数据时出错(脚本438)?,javascript,jquery,ajax,internet-explorer-9,Javascript,Jquery,Ajax,Internet Explorer 9,说真的,IE有什么问题?当我访问通过AJAX加载的XML数据时,它抛出一个“对象不支持此属性或方法”错误。我花了整整一个晚上试图找到原因,但没有成功 代码没有问题,XML数据没有问题,每隔一个浏览器都可以正常工作,事实上,它甚至可以在IE9中工作,但只有当它在本地运行时,只要它在internet区域中,它就开始抛出错误。人们可能会认为这是区域安全设置,但它甚至不适用于最低安全设置 调试器显示XML数据已成功加载和解析,它显示数据类型为IXMLDOMDocument2,在本地,它表示数据类型为Do

说真的,IE有什么问题?当我访问通过AJAX加载的XML数据时,它抛出一个“对象不支持此属性或方法”错误。我花了整整一个晚上试图找到原因,但没有成功

代码没有问题,XML数据没有问题,每隔一个浏览器都可以正常工作,事实上,它甚至可以在IE9中工作,但只有当它在本地运行时,只要它在internet区域中,它就开始抛出错误。人们可能会认为这是区域安全设置,但它甚至不适用于最低安全设置

调试器显示XML数据已成功加载和解析,它显示数据类型为
IXMLDOMDocument2
,在本地,它表示数据类型为
Document
,查看jQuery源代码后,它可能在本地使用
Microsoft.XMLHTTP
,如果可用,则使用
XMLHttpRequest
,因此可能与此有关

我可以通过将数据作为文本加载,然后使用$.parseXML来解决这个问题,但我真的想知道这里发生了什么,这是一个已知的错误,还是我遗漏了其他东西

示例(使用jQuery 1.8.2):


小孩
$.ajax({
url:'test.xml',
数据类型:“xml”,
成功:功能(数据)
{
警报(数据);
}
});

如果您希望将“数据”视为可以发出警报的字符串,请执行以下操作:

$.ajax({
    url: 'test.xml',
    dataType: 'text',
    success: function(data)
    {
        alert(data);
    }
});
如果您正在使用XML做其他事情,我们需要了解您正在尝试做什么

根据您发布的内容(我下载的),这在IE中起作用:

$.ajax({
    url: 'test.xml',
    dataType: 'xml',
    success: function (data) {
        alert(jQuery(data).find('child').text());
    }
});

你能提供一些给出问题的真实代码吗?这段代码不是项目中真正的代码,但真正的代码导致了问题,我可以用现成的HTML和XML文件打包一个zip,但不会有额外的代码。我知道这不是真正的代码。但是你看,为了了解正在发生的事情,我认为有必要了解更多的信息。这不太可能是jQuery的错误,因为这是一个非常常见的功能(尽管我没有放弃它)。很可能返回的XML数据出错了。我知道我可以做到,这就是我在最后一句中提到的;)我发布的代码是触发问题所需的全部,当然在我的实际项目中还有更多,但这不是重现问题的必要条件。这就是我要说的,当数据作为Xml对象返回时,您不能警告数据并期望它工作。张贴你想如何使用它来揭示问题。我想我可以。当对象被请求表示为文本时,不是每个对象都应该有一个内部调用的toString方法吗。这可能是一个实际的问题,但在我们看到它的预期用途之前,我们可能在寻找一个不存在的问题的答案。这就像试图问生命的意义。程序员为什么这样做并不重要,因为你永远不会做你想做的事情。不像C#这样的语言,每个类都是从Object派生的(Object有自己的.ToString()),并非所有对象都遵循该模型。真正的问题在于你的Javascript如何使用它,这就是为什么我们从一开始就提出要求。出于猜测的缘故,微软倾向于重新调整许多系统的用途,这些系统有时对较新的系统并不友好。
$.ajax({
    url: 'test.xml',
    dataType: 'xml',
    success: function (data) {
        alert(jQuery(data).find('child').text());
    }
});