我有一个要求,在AJAX调用必须在document.ready之前发生,并且来自AJAX调用的响应将用于更新一些HTML元素。
所以我有类似下面的内容:
var ajaxget = $.ajax({
type: 'GET',
url:'/xxx/get',
success: function(resp) {
//logic
}
});
$(document).ready(function(){
$.when(ajaxget).done(function(resp) {
//do ur logic
$(documet).trigger("yyyy");
});
});
//the above part is common across pages and placed in the <head>
//below one goes into multiple places based on the pages
$(document).ready(function(){
$(document).on('yyyy', function() {
});
});
问题是触发事件&#34; yyyy&#34;不会在IE中执行,也会在其他浏览器上间歇执行。请帮忙!
答案 0 :(得分:1)
最好使用then()
代替success
,以确保success
中发生的任何事情都在$.when.done
之前完成
请注意,success
不是承诺链的一部分
尝试:
var ajaxget = $.ajax({
type: 'GET',
url: '/xxx/get'
}).then(function(resp) {
//logic
return resp;
});
$(document).ready(function() {
ajaxget.then(function(resp) {
//do ur logic
$(documet).trigger("yyyy");
});
});
但是请注意,如果显示的订单正确
,您也会在注册之前触发事件答案 1 :(得分:0)
此代码适用于我。只是我定义了&#34; yyyy&#34;触发前的事件。
$(document).ready(function () {
$(document).on("yyyy", function () {
console.log('triggered');
});
$.ajax({
type:'GET',
url:'some.jsp',//your url
success:function(resp){
//logic
$(document).trigger("yyyy");
console.log(resp);
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;