2011-01-27 114 views
4

我的网站在IE中失败。我只能访问Mac,因此很难测试,并且相似度是meh。我已经能够检查一次或两次,所以我知道它在搜索YouTube时失败。为什么在IE中失败?

关闭弹出>按2010>按10/20>击中了我的灵魂>错误

http://www.phishvid.com/

任何人都可以提供一些见解?代码如下:

谢谢!

+1

哪个版本的IE浏览器?涉及JS的事情往往因IE <= 7或<= 6而失败,原因是MS对标准解释的不同版本 – tobyodavies 2011-01-27 06:29:04

+0

我相信所有这些。我真的不能很好地测试它。你认为你可以快速检查吗?谢谢。 – switz 2011-01-27 06:30:19

+2

这是一个跨站点脚本问题,IE可能会阻止ajax/json请求。看看这个:http://stackoverflow.com/questions/3038862/jquery-getjson-not-working-cross-site/3038886#3038886 – Craig 2011-01-27 06:31:02

回答

4

您正在尝试向另一个域发出AJAX请求,该域正受到Same Origin Policy的限制。

为了使用JSONP,为了使您的请求使用JSONP callback=?到您请求的网址,这将有助于您克服跨域障碍。

你更新网址看起来应该像

$.getJSON("http://gdata.youtube.com/feeds/api/videos?callback=?&max-results=5&alt=json&q=phish " + song + " " + month2 + " " + day + " " + year, function (data) { 
    //your callback code 
} 

Example

0

我的IE报告在上线138 jQuery的1.4.4.min.js“访问被拒绝”,CHAR 355在您的网站看起来是这样的:

if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", 
b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& 
c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| 
c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w} 

实际的字符数355是第一个B,所以我猜你可能碰到过jQuery 1.4.4中的一个错误?您可以尝试使用以前的版本(除非您使用某些1.4.4特定功能)或将.min.js文件替换为完整的jquery文件,请将调试器语句插入此位置的jquery文件中(之前它抛出异常)并尝试调试以找出错误。例如你可以使用微软的Visual Web开发人员调试,或者如果在IE9出现同样的问题也有一个内置的.js文件 - 调试器以及

编辑:看到你贴吧完整的jQuery代码后,很明显,问题在于,在这种情况下,jQuery正在尝试标准的ajax调用,而不是JSONP。 (标准ajax只允许回服务器提供的javascript)