Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从ajax调用中查询下一组记录?_Javascript_Jquery_Rest - Fatal编程技术网

Javascript 如何从ajax调用中查询下一组记录?

Javascript 如何从ajax调用中查询下一组记录?,javascript,jquery,rest,Javascript,Jquery,Rest,我正在查询salesforce数据库以获取一些数据。查询结果将在一个响应中最多返回2000条记录,还将返回“nextRecordsUrl”参数,我们可以使用该参数获取下一组结果。因此,我可以通过在$.ajax()的done函数中再次调用相同的方法来实现这一点。我想知道有没有更好的方法 function stringSearch(queryParam){ var sessionCookie = getCookie('sid'); var currentDomain = window

我正在查询salesforce数据库以获取一些数据。查询结果将在一个响应中最多返回2000条记录,还将返回“nextRecordsUrl”参数,我们可以使用该参数获取下一组结果。因此,我可以通过在$.ajax()的done函数中再次调用相同的方法来实现这一点。我想知道有没有更好的方法

function stringSearch(queryParam){
    var sessionCookie = getCookie('sid');
    var currentDomain = window.location.host;

        queryParam = queryParam== undefined || queryParam =='' ? "/services/data/v28.0/query/?q=SELECT+Name+from+Account" : queryParam;
        $.ajax({
            url : "https://"+currentDomain+queryParam,
            headers : {"Authorization": "Bearer "+ sessionCookie},
            contentType : "application/json"
        }).done(function(res){
            //do some processing with the result
                    processingFunction(res.records);
            if(res.nextRecordsUrl){
                //call the same method with different parameters
                stringSearch(res.nextRecordsUrl);
            }else{
                //Done with all the processing proceed to final actions 
            }
        }).fail(function(err){
            alert('Oops!! We were unable to fetch the data you requested!\n'+JSON.stringify(err)+'\n ');
        });
 }

 function processingFunction(){
    //use the array and do some processing. 

 }

我觉得你的解决方案很好。也许我唯一想改变的是,如果出现错误,我会重试ajax请求有限的次数。看起来很可靠,我认为递归处理得很好。根据您对数据的处理程度,您可能希望在处理之前查询新数据,以便它们都是异步的。@megawac:我已经编辑了我的问题。我正在从done方法调用
processingFunction
。我假设代码将等待
processingFunction
完成对传递数据的处理,然后将从done方法调用
stringSearch
。是否有一种异步方式?如果将
stringSearch
递归行移到
processingFunction
上方,客户端将在尝试处理数据之前请求下一组数据。根据处理函数处理数据集所需的时间,这可能很有用。注意:这也会使您的代码复杂化,如果您决定使用此方法,我建议您考虑使用
promises
(好像处理功能需要比下一个请求更长的时间才能完成,并且不会维护订单)。