jQuery ajax .load()仅在Internet Explorer中导致500错误

时间:2014-11-19 00:30:06

标签: jquery ajax internet-explorer

此问题已在其他问题中发布,但所提议的解决方案均未解决我的特定问题。

我的网站已实施以下META代码:

<title>My Site Title</title>
<meta charset="UTF-8">
<link rel="shortcut icon" href="Assets/Media/favicon.ico" type="image/x-icon" />
<meta name="keywords" content="some, useless, keywords">
<meta name="description" content="Site description.">
<meta http-equiv="X-UA-Compatible" content="IE=9"/>

我正在使用以下代码将内容(网页)加载到我的#App <div>,这是主要内容区域:

var section = 'About';

$('#App').fadeTo(0,0).empty().load(
    'Views/' + section + '.php',
    { section_object_ID : section, category_object_ID : objectID },
    function(){
        $('#App').transition({ opacity: 1, duration: 333, easing: 'easeOutQuint');
    }        
);

所以上面的代码只是使用jQuery的.load()函数将About.php加载到我的内容区域:<div id="App"></div>

它适用于所有版本的Safari,Chrome和Firefox。但它返回500错误Internet Explorer 8,9,10和11。

肯定没有500 - Internal Server Error给出它加载完全正常,除了IE。

以下是网络流量的一些上限:

请求 enter image description here

响应标头 enter image description here

响应主体 enter image description here

任何人都知道这件微软的垃圾是怎么做错的,以及我如何浪费一些宝贵的时间来修复他们的错误以使该死的网站负载?

感谢您提前提供任何帮助。

3 个答案:

答案 0 :(得分:2)

如果这解释了错误代码500,但是JS代码对我而言看起来很糟糕。而不是结束;你还缺少一对括号:}) 并检查服务器日志以获取有关错误的详细信息。如果服务器显示500,则表示服务器端发生了某些事情,并将其记录下来。

答案 1 :(得分:1)

对于第N次,我重复问题是在您的脚本或服务器配置中。我发现它 - 你的服务器在http请求的Referer字段上做出了奇怪的反应。

IE在Referer中提交带有哈希值的URL,并且您的脚本(或MVC或服务器配置/安全设置)不喜欢它。我对POST请求进行了模拟,并且由于请求的Referer字段中的#!/ Services (或任何其他主题标签)发生了500错误:

Referer: http://adr.visia.ca/#!/Services

其他浏览器不会在请求中发送哈希,但这不是某些特定浏览器(IE)的问题 - 这是您的服务器或服务器端脚本的问题!

答案 2 :(得分:1)

你的问题是CORS。

如果CORS标头没有出现并且在请求上挽救,IE8 / 9将返回500。重复一遍, IE给出500错误而不是你的服务器 - 我知道这没有意义,但IE也没有意义。

如果你像我一样,你的htaccess或其他服务器配置中有一些东西可以根据引用来返回CORS头。

IE8 / 9不使用普通的AJAX,它们使用XDomainRequest,并且这些请求不会通过引用来传递。

您需要找到一种方法来设置该标题,以便工作正常。