我打電話給改變事件的兩個函數。如何在第一次執行後調用第二個函數?
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