我正在用PLAY Framework 2.2.1構建搜索引擎,並在列出結果時遇到問題。搜索結果存儲在框架提供的緩存中,可以使用唯一標識進行訪問。我不希望結果一次顯示出來,所以結果列表通過ajax以塊形式提取。 結果站點加載後的第一部分,每次發生某個滾動事件時其餘部分都會被加載。如何防止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>
警惕JS調試?你的console.log(obj)被綁架了嗎? – biesior
感謝您的建議,biesior,我很新的web開發。你能回答我的問題嗎? –
好運! ;) – biesior