PLAY Framework 2.2.1을 사용하여 검색 엔진을 구축 중이며 결과를 나열하는 데 문제가 있습니다. 검색 결과는 프레임 워크에서 제공하는 캐시에 저장되며 uniqe id를 사용하여 액세스 할 수 있습니다. 결과를 한꺼번에 모두 표시하지 않으려면 결과 목록을 아약스를 통해 청크로 가져와야합니다. 결과 사이트가로드 된 후 첫 번째 부분과 특정 스크롤 이벤트가 발생할 때마다 나머지 부분. javascript의 ajax 함수가 여러 번 실행되는 것을 방지하는 방법
이제 문제는 결과 중 일부는 여러 번 나열되고 경고 메시지가 기능 말해 것입니다 next_results 때로는 변수 POS 두 번 이상 동일한 값으로 실행됩니다. 이 문제를 방지하려면 변수를 처리하는 을 사용하십시오. 그러나이 방법은 올바르게 작동하지 않습니다.var processing = false;
var not_finished = true;
var pos = 0;
function next_results(uuid, result_size){
alert("input\n" + result_size + " result_size\ncurrent_position" + pos);
jsRoutes.controllers.Application.getResults(uuid, pos, result_size).ajax({
success : function(data) {
var len = data.length;
// alert("input\n" + result_size + " result_size\ncurrent_position" + pos + "\n result_length" + len);
pos = pos + len;
if (len == 0){
not_finished = false;
} else {
for (var i = 0; i < len; i++) {
var result= data[i];
$('#results').append(result.string);
};
}
}
});
}
var uuid;
function set_uuid (x){
uuid = x;
}
$(document).ready(function(){
//initial
if (!processing){
processing = true;
next_results(uuid, 10);
processing = false;
}
$(document).scroll(function(e){
if (processing)
return false;
if (not_finished && $(window).scrollTop() >= $(document).height() - $(window).height() - 300){
processing = true;
next_results(uuid, 2);
processing = false;
}
});
});
고유 ID가 (스칼라를 통해) HTML 코드에서 설정됩니다
<script>set_uuid('@uuid');</script>
경고를 할 필요가 ? 당신 console.log (obj)가 납치 됐나요? – biesior
귀하의 조언에 감사드립니다, biesior, 나는 꽤 웹 개발에 새로운입니다. 아래 내 질문에 답해 줄 수 있습니까? –
정말 행운! ;) – biesior