[英]Jquery ajax call php page that contain ajax calls
我有2頁
1)index.php
2)feedy.php
1)在index.php中,我有以下代碼:
$.ajax({ type: 'GET',
url: 'feedy.php?n=<?echo $nnn?>',
data: { get_param: 'value' },
success: function (data) {
var names = data
$('#content').html(data);
}
});
2)在feddy.php中,我有以下代碼:
for (i=0;i<=10-1;i++){
$.ajaxSetup({async: false});
$.post(
'addme.php',
{ txt: con, lnk:ln,addr:'".$addr."' },
function(data) {
$('#stage').html(data);
}
}
如您所見,我在頁面上調用另一個頁面,該頁面又調用另一個頁面10次。
問題:index.php調用feedy.php,但它僅等待獲取php輸出,而不等待javascript代碼的輸出。 我可以等待,以便在feedy.php中完成所有調用嗎?
我認為可行的另一種解決方案是找到一種方法,將信號發送到index.php,即feedy已完成調用。
請幫我,因為我找不到解決方案:(
AJAX是異步的,這意味着它不會停止執行流程。
當您在index.php中進行AJAX調用時,它不會等待feedy.php的結果,因為它正在進行異步調用。
您必須重新考慮feedy.php返回數據的方式,確保它以同步方式進行。 這樣的一個示例是直接將所需的數據回顯到頁面,而不是將其包裝在異步函數調用中。
在feddy.php的For循環中,讓它向index.php返回一個完整的值,因此直到循環完成后它才返回。 或更合適的方法是,直到循環完成,JavaScript才能在index.php上繼續運行。
for (i=0;i<=10-1;i++){
$.ajaxSetup({async: false});
$.post(
'addme.php',
{ txt: con, lnk:ln,addr:'".$addr."' },
function(data) {
$('#stage').html(data);
}
if(i = 8) { //right before the i++ for the last execution
return 'positive value';
}
}
然后為索引添加if語句,以確保成功
$.ajax({ type: 'GET',
url: 'feedy.php?n=<?echo $nnn?>',
data: { get_param: 'value' },
success: function (data) {
if(response=='positive value') {
var names = data
$('#content').html(data);
}
}
});
您可以將來自feddy.php
的JavaScript代碼放入index.php
的函數中,並在初始ajax調用后調用該函數。
像這樣的某些功能可以完成您需要使用feddy.php進行的所有操作...
function doFeddyCalls()
{
for (i=0;i<=10-1;i++){
$.ajaxSetup({async: false});
$.post(
'addme.php',
{ txt: con, lnk:ln, addr:'".$addr."' },
function(data) {
$('#stage').html(data);
});
}
}
然后,當您對feddy.php進行ajax調用時,請執行以下操作。
$.ajax({
type: 'GET',
url: 'feedy.php?n=<?echo $nnn?>',
data: { get_param: 'value' },
success: function (data)
{
var names = data
$('#content').html(data);
doFeddyCalls(); //Ajax on feddy.php
}
});
一旦使用了ajax函數將feddy.php
加載到index.php
,JavaScript就會對加載的元素起作用。
編輯:由於您不希望用戶看到它們正在加載,因此可以使用$('#content').hide()
隱藏該元素,或者同時顯示一個加載面板。 此答案描述了如何對多個Ajax調用執行單個回調,一旦加載完成,就可以用來顯示該元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.