我的JSP页面(jQuery 1.7.2)中有以下jQuery代码:
function Header() {
this.add = function ( parentDiv, leftToolbar, rightToolbar ) {
hbHeader = Handlebars.compile( $( "#hb-header" ).html() );
$( parentDiv ).html( hbHeader( {user:{tenantDescription:"", firstName:"", lastName:""},
leftTB:null, rightTB:null } ) );
$.ajax( {
url:"${pageContext.request.contextPath}/services/login/sessionUser",
type:"POST",
async:true,
success:function ( result ) {
app.user = result;
var ltHtml;
var rtHtml;
if ( leftToolbar ) {
ltHtml = new Handlebars.SafeString( leftToolbar );
}
if ( rightToolbar ) {
rtHtml = new Handlebars.SafeString( rightToolbar );
}
$( parentDiv ).html( hbHeader( {user:app.user,
leftTB:{
html:ltHtml,
hidden:leftToolbar == null
},
rightTB:{
html:rtHtml,
hidden:rightToolbar == null
}
} ) )
},
error:function( jqXHR, textStatus, errorThrown ) {
alert("error in ajax");
}
} );
}
}
在执行此代码之前,将注册一个ajaxSend
和ajaxError
侦听器。像这样:
$( "#log-window" ).ajaxSend( function ( event, jqXhr, ajaxOptions ) {
console.log( "handling an ajax request adding username and password to the header" );
jqXhr.setRequestHeader( 'username', $.cookie( 'username' ) );
jqXhr.setRequestHeader( 'password', $.cookie( 'password' ) );
} );
$( "#log-window" ).ajaxError( function ( errorThrown, xhr, failedReq, textStatus ) {
alert("error in "+failedReq.url);
if ( textStatus == 'timeout' ) {
if ( !failedReq.tryCount ) {
failedReq.tryCount = 1;
failedReq.retryLimit = 3;
}
if ( failedReq.tryCount++ <= failedReq.retryLimit ) {
//try again
$.ajax( failedReq );
return;
}
throw 'Es wurde ' + failedReq.retryLimit + ' Mal versucht. Die Verbindung scheint nicht zu funktionieren.';
return;
}
if ( xhr.status == 500 ) {
if ( $.cookie( 'pageRefreshed' ) == null ) {
$.cookie( 'pageRefreshed', 'true', { expires:10000 } );
location.reload();
}
throw 'Der Server hatte ein Problem. Bitte melden Sie den Fehler and den Systemadministrator';
} else if ( xhr.status == 401 ) {
if ( failedReq.url != "${pageContext.request.contextPath}/services/login" ) {
var loginData = {
username:$.cookie( 'username' ),
password:$.cookie( 'password' )
};
loginAttempt( failedReq, loginData );
}
} else {
throw 'Oops! There was a problem, sorry.';
}
} );
整个页面可以在http://alpha.sertal.ch:8181/VisionWeb/data-
details/#data:12300923
下访问
您甚至可以登录。用户:Alsoft03密码:密码
第一次进行ajax调用时应该发生的是401错误,因为用户未登录。这就是IE失败的地方。该ajaxSend
监听器被调用,但ajaxError
并非如此。如果我在$
.ajax本身上设置了错误回调,则也不会调用它。
当我使用真实的浏览器(FF,Chrome,Opera)打开页面时,它可以正常工作并要求输入密码。除非您按F12键,否则IE不会,在这种情况下,该站点也可以按预期工作。
真的很奇怪 您在控制台打开的情况下加载页面,该页面可以正常工作。关闭控制台后,它仅显示一个空标题。页面加载完成后,您可以关闭控制台,它将继续加载。
我在各种机器上进行了测试,并得到了相同的结果。
它让我疯狂。我无法调试,因为如果我使用F12打开调试器,它将正常工作。
我知道没有进行ajax回调,因为我alert("I got so far")
在不同位置放置了行。
如果有人有线索,这是非常受欢迎的。
console.log()
需要从脚本中删除所有需要的实例,以使其能够在IE9中工作而无需处于开发人员模式。
更新 我很高兴这个答案对一些人有所帮助。只是以为我会使用从HTML5
Boilerplate
使用的简单解决方案来更新此答案:
// Avoid `console` errors in browsers that lack a console.
(function() {
var method;
var noop = function () {};
var methods = [
'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
'timeStamp', 'trace', 'warn'
];
var length = methods.length;
var console = (window.console = window.console || {});
while (length--) {
method = methods[length];
// Only stub undefined methods.
if (!console[method]) {
console[method] = noop;
}
}
}());
将此放置在代码之前,它应可帮助您避免在缺少控制台的浏览器中出现任何控制台错误。
问题内容: 基本上,我正在制作一款可以更新玩家位置的游戏,它使用以下线程: 效果很好,但是如果我删除System.out.println(),它将停止运行。我不知道为什么会这样,整个班级如下: 最后说明:传入布尔值upPresses和downPressed,我唯一要关注的是: 问题答案: 像这样的循环 会完全占用CPU。它开始表现更好的原因可能是因为您为I / O每次迭代产生了数百个周期。 我建议
问题内容: jQuery click函数在这里工作正常 但是如果我通过ajax 设置一些功能,将无法正常工作。 例如 现在,最后一个不起作用。 jsfiddle示例:http : //jsfiddle.net/suhailvs/wjqjq/ 注意:CSS在这里工作正常。 我想使这些新添加的与jQuery click一起工作。 问题答案: 问题是.click仅适用于页面上已经存在的元素。如果要连接将
问题内容: 我的JButton ActionListener出现问题。我在另一个类中定义了doTheCleaning()方法,该类在调用时对我的GUI进行了一系列更改。 然后在另一个类中,我实例化了包含doTheCleaning()方法的类,并用我的actionperformed()方法为我的jbutton编写了ActionListener,如下所示: 我知道如何做剩下的事情,例如addActio
问题内容: 我有一个网站,我像这样拨打ajax: 所请求的页面除了返回一个数字的状态代码外没有任何作用,并且除IE9之外,在其他所有浏览器上都可以正常运行。该脚本与请求页面托管在同一域中,因此跨域脚本应该没有任何问题。 我终于找到了正在发生的事情,但我不知道如何解决。事实证明,Ajax请求成功完成,没有任何问题。我通过使用Fiddler来查看网络流量来验证了这一点。服务器使用HTTP状态代码200
问题内容: 我有这个简单的jquery代码。单击后,它会获得标签的URL,将页面加载到当前内容旁边,然后滑动并删除旧内容。页面的状态与以前完全相同,相同的元素没有额外的类或样式。问题在于下一个ajax调用不起作用。也许我需要.unbind()吗? 我是jquery和javascript的新手,所以我很迷路。非常感谢你的帮助 :) 问题答案: 由于您正在动态加载内容,因此替换事件处理程序的内容的可能
问题内容: 我正在编写ajax Web应用程序,但是由于任何原因,当我在Internet Explorer 9(IE9)中对内部数据服务执行GET时,它都无法正常工作。同样的调用在Chrome,Firefox和Safari中也可以正常工作。我正在使用本地主机Web服务器(沼泽)进行开发,并且正在与要尝试的数据服务在同一网络上进行开发。我正在使用Jquery 1.8.1(我返回了几个版本,但仍然看到