Javascript 接收数据时ajax调用中的多个ajax调用
我不熟悉AJAX/jQuery,所以请耐心听我说……这里有一个让人大吃一惊的例子;) 我正在对一个php脚本(process_data.php)进行AJAX调用,该脚本处理大量数据并返回三个标志。每个标志表示进程的完成以及调用脚本的数据可用性。我的ajax调用应该做到以下几点:Javascript 接收数据时ajax调用中的多个ajax调用,javascript,jquery,ajax,Javascript,Jquery,Ajax,我不熟悉AJAX/jQuery,所以请耐心听我说……这里有一个让人大吃一惊的例子;) 我正在对一个php脚本(process_data.php)进行AJAX调用,该脚本处理大量数据并返回三个标志。每个标志表示进程的完成以及调用脚本的数据可用性。我的ajax调用应该做到以下几点: Call process_data.php asynchronously.... process_data.php "echoes" three flags (at approximately 4 second in
Call process_data.php asynchronously....
process_data.php "echoes" three flags (at approximately 4 second intervals)
Upon echoing of the first flag...make another ajax call to get_first_dataset.php
Upon echoing of second flag...make ajax call to get_second_dataset.php
Upon echoing of third flag...make ajax call to get_third_dataset.php
因此,基本上我是在问如何“实时”处理从AJAX调用返回的数据,以及如何在正在运行的AJAX调用中进行另一个AJAX调用……再一次,如果我使用的是“新手”术语,那么很抱歉……这在javascript中是不可能的。(至少不带web套接字) Javascript将等待整个主体下载完成,因此它将等待12秒,以便PHP文件完成回显 因此,解决办法是: 让PHP在第一次调用后立即返回。然后设置另一个端点Javascript可以每隔一段时间查询以获取标志的状态
Call process_data.php call completes immediately
Call process_data_status.php at 4 second intervals
if process_data_status.php returns flag 1
make ajax call to get_first_dataset.php
if process_data_status.php returns flag 2
make ajax call to get_second_dataset.php
if process_data_status.php returns flag 3
make ajax call to get_third_dataset.php
这在javascript中是不可能的。(至少不带web套接字) Javascript将等待整个主体下载完成,因此它将等待12秒,以便PHP文件完成回显 因此,解决办法是: 让PHP在第一次调用后立即返回。然后设置另一个端点Javascript可以每隔一段时间查询以获取标志的状态
Call process_data.php call completes immediately
Call process_data_status.php at 4 second intervals
if process_data_status.php returns flag 1
make ajax call to get_first_dataset.php
if process_data_status.php returns flag 2
make ajax call to get_second_dataset.php
if process_data_status.php returns flag 3
make ajax call to get_third_dataset.php
这不是一个大的精神狂欢。。。您基本上需要一个接一个地链接ajax回调。。这句话里只有一些东西
$.ajax({
url: "process_data.php",
data: { name: 'John', age: 22 },
})
.done(function() {
$.ajax({
url: "process_data.php",
data: { name: 'John', age: 22 },
})
.done(function() {
$.ajax({
url: "process_data.php",
data: { name: 'John', age: 22 },
})
.done(function(){
console.log('last call done!')
})
})
})
最重要的是,您必须处理来自服务器的数据,并将其链接到DOM并进行操作。。就这样 这可不是一个让人大吃一惊的事。。。您基本上需要一个接一个地链接ajax回调。。这句话里只有一些东西
$.ajax({
url: "process_data.php",
data: { name: 'John', age: 22 },
})
.done(function() {
$.ajax({
url: "process_data.php",
data: { name: 'John', age: 22 },
})
.done(function() {
$.ajax({
url: "process_data.php",
data: { name: 'John', age: 22 },
})
.done(function(){
console.log('last call done!')
})
})
})
最重要的是,您必须处理来自服务器的数据,并将其链接到DOM并进行操作。。就这样 您可以使用setInterval(),将ajax放在函数中,并在最后一次“echo”后调用间隔setInterval(youtAjaxFunction,1000//每1秒),您可以终止间隔函数。您可以使用setInterval(),将ajax放在函数中,并在最后一次“echo”后调用间隔setInterval(youtAjaxFunction,1000//每1秒)您可以终止interval函数。我需要在第一个ajax调用接收数据时进行ajax调用……而不是在从“process_data.php”获取数据之后。每隔4秒,“process_data.php”会回显一个标志,外部ajax调用需要读取该标志并触发另一个对不同脚本的ajax调用……您的解决方案使用“.done”方法,该方法在进行新的ajax调用之前等待ajax调用完成……所以在ajax完成之前,
setTimeout
,您认为呢?。。类似节流阀的东西?我需要在第一个ajax调用接收数据时进行ajax调用…而不是在从“process_data.php”获取数据之后。每隔4秒,“process_data.php”会回显一个标志,外部ajax调用需要读取该标志并触发另一个对不同脚本的ajax调用……您的解决方案使用“.done”方法,该方法在进行新的ajax调用之前等待ajax调用完成……所以在ajax完成之前,setTimeout
,您认为呢?。。有点像节流阀?“这在javascript中是不可能的(至少没有web套接字)”……我在思考javascript中处理流式数据的“onprogress”这句话?!onprogress在流式处理时不会给你响应体。本质上你想做的是”这在javascript中是不可能的。(至少在没有web套接字的情况下)“……我在思考javascript中处理流数据的“onprogress”这句话?!onprogress不会提供响应主体,因为它是流式的。基本上你想做的是