Javascript 在document.ready之前调用AJAX
我有一个要求,在document.ready之前必须进行AJAX调用,AJAX调用的响应将用于更新一些HTML元素 因此,我有如下内容:Javascript 在document.ready之前调用AJAX,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个要求,在document.ready之前必须进行AJAX调用,AJAX调用的响应将用于更新一些HTML元素 因此,我有如下内容: var ajaxget = $.ajax({ type: 'GET', url:'/xxx/get', success: function(resp) { //logic } }); $(document).ready(function(){ $.when(ajaxget).done(f
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() {
});
});
var ajaxget=$.ajax({
键入:“GET”,
url:“/xxx/get”,
成功:功能(resp){
//逻辑
}
});
$(文档).ready(函数(){
$.when(ajaxget).done(函数(resp){
//你懂你的逻辑吗
$(documet).trigger(“yyyy”);
});
});
//以上部分在各页中很常见,并放置在
//下面一个根据页面进入多个位置
$(文档).ready(函数(){
$(文档).on('yyyy',function(){
});
});
问题是触发事件“yyy”在IE中不会执行,在其他浏览器上也会间歇性执行。请帮忙 最好使用
then()
而不是success
,以确保success
中发生的任何事情都在$之前完成。当.done
请注意,success
不是承诺链的一部分
尝试:
但也请注意,如果所示顺序正确,则在注册之前您正在触发该事件。此代码适用于我。我只是在触发之前定义了“yyy”事件
$(文档).ready(函数(){
$(文档).on(“yyyy”,函数(){
console.log('triggered');
});
$.ajax({
类型:'GET',
url:'some.jsp',//您的url
成功:功能(resp){
//逻辑
$(文档).trigger(“yyyy”);
控制台日志(resp);
}
});
});代码>
为什么“要求”在document.ready之前执行此操作?难道你不能在document.ready中完成它,并让其他一切等待它吗?顺便说一句,不是一个失败的投票者。document.ready确实需要很多时间,我们还需要在第一次调用的基础上进行其他ajax调用。因此,该站点上的体验非常笨拙,这只是一个输入错误,这种行为是间歇性的$(document).on('yyy',function(){//this not get execute});永远不要使用async:false
。这是一种可怕的做法,不受欢迎。您将在浏览器开发工具控制台中看到警告,使用async false没有任何意义。我更新了代码。我确实无法将其放在上面,因为它可能是特定于页面的!无论您将其存放在何处,请确保在触发“yyyy”事件之前加载该事件。
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");
});
});