2017-03-07 9 views
0

OK、ここに私の問題があります。私は、ページネーションを使用するAPIを使って作業しています。応答バックが空の配列になるまでループを続けます。しかし、これは機能しませんし、コードはちょうどハングアップします。すべてのループで、次のページを取得するためにページ変数をインクリメントします。whileループのjQuery AJAXページ設定

// Function to get a list of 50 assignments. 
function getAssignments(token, instuctureSubdomain, course, page, callback) { 
    var settings = { 
     "async": true, 
     "crossDomain": true, 
     "url": "https://" + instuctureSubdomain + ".instructure.com/api/v1/users/self/courses/" + course + "/assignments?per_page=50&page=" + page, 
     "method": "GET", 
     "headers": { 
     "authorization": "Bearer " + token, 
     "cache-control": "no-cache" 
     } 
    } 

    $.ajax(settings).done(function (response) { 
     callback(response); 
    }); 
}; 

var loop = true; 
var page = 1; 
while (loop) { 
    getAssignments(token, instuctureSubdomain, item.id, page, function (response) { 
     if (response.length == 0) { 
// End the loop because the response returned a blank array. 
      loop = false; 
     } else { 
      response.forEach(function (item) { 
// Add the assignment to an array... 
      }); 
      page++ 
     }; 
    }); 
}; 
+0

console.logを使用してどのような結果が得られましたか?私はそこから始めることをお勧めします。 – Neil

+0

ページ区切りが一度に10件ずつ表示され、合計で48件の結果が得られない場合は、最終的な取り消しの長さは0でなく8になりますか? – Harry

+0

@ハリーTrueですが、ループは再び実行され、APIは空の配列を返してループを停止します。 – juliancz

答えて

0

ここではどのように記述しますか。それは、要求のトンであなたのウェブページを遅らせる/凍らせて、実質的に同期的にそれを呼び出すことはありません。

<script> 

function loop (i) { 
    $.get("http://example.com/api/" + i + ".php", function (data) { 
     array = process(data); 
     if (array.length > 0) { 
      loop(i + 1); 
     } 
    }); 
} 

loop(1); 

</script> 
関連する問題