[英]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.