我打电话给改变事件的两个函数。如何在第一次执行后调用第二个函数?
function1();
function2();
function1()
:是一个Ajax调用
function2()
:功能1之前得到执行()。
这是怎么发生的?
任何帮助?
我打电话给改变事件的两个函数。如何在第一次执行后调用第二个函数?
function1();
function2();
function1()
:是一个Ajax调用
function2()
:功能1之前得到执行()。
这是怎么发生的?
任何帮助?
Please look at the code written below:
function1() {
$.ajax({
url: myurl,
type: 'GET',
async:false,
success: function(response) {
function2();
}
});
}
请注意,这里的 “异步:假” 将确保成功的方法调用当第一次功能已成功执行。所以你应该使用“async:false”来确保function2()将在function1()之后调用。
如果function1()
然后AJAX功能在你的Ajax
成功调用function2()
如果你正在使用jQuery阿贾克斯
function1() {
$.ajax({
url: myurl,
type: 'GET',
success: function(response) {
function2();
}
});
}
从阿贾克斯成功响应后调用你的函数2。
function function1()
{
//Ajax Call
..
..
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
function2();
}
}
的Ajax
第一A意味着asynchronous
,即同时仍在处理Ajax请求经常JavaScript程序流程将继续。因此,function2
将在从function1
开始的Ajax请求完成之前执行。
解决方案:Javascript中的每个异步方法都会为您提供所谓的callback
,这是一个将在异步方法完成后调用的函数。在jQuery.ajax()
这个回调提供了参数success
。如果您在此回调中拨打function2
,它将起作用。
function1() {
...
$.ajax({
url: '...',
type: 'GET',
success: function(data) {
// this will be executed after the asynchronous method finishes
function2();
}
});
}
通常这样调用
function1(function() {
function2();
});
如果是Ajax调用这样
function function1() {
$.ajax({
url: "url",
type: 'POST',
}).success(function (html) {
function2();
});
}
jQuery的AJAX的回报延迟对象(http://api.jquery.com/category/deferred-object/),它的真正有用的像你的东西。顺便说一下,延迟对象支持链接模式,所以你可以调用多个函数。
所以,陆续运行一个功能,您可以采取以下
function ajaxCall(){
return $.get('your/api/call', {param:1});
}
function fun1(){
console.log('Function 1 was called');
}
function fun2(){
console.log('Function 2 was called');
}
ajaxCall().done(fun1).done(fun2);
或者你也可以使用$。当
$.when($.get('your/api/call'))
.then(function(){ alert(1); })
.then(function(){ alert(2); });
有用的链接:
函数1必须接受一个回调方法,其中你将调用function2 ...回调将在ajax调用完成后执行 –
你可以从http://stackoverflow.com/questions获得一个基本的想法/ 14220321 /如何返回ajax调用的响应 –
您需要了解更多关于两个概念的信息1)Ajax调用以及它们如何异步。 2)Javascript回调。阅读这两个,你就会知道为什么会发生这种情况。 – Nikhil