我想找到一種方法來獲取用戶創建的關鍵字數組並過濾JSON數組,並將結果附加到屏幕上。如何使用關鍵字來過濾JSON數組對象?
以下是我正在使用的實際代碼。
拉動拖尾信息var keywords= [];
var interval = "";
var pointer = '';
var scroll = document.getElementById("tail_print");
$("#filter_button").click(
function(){
var id = $("#filter_box").val();
if(id == "--Text--" || id == ""){
alert("Please enter text before searching.");
}else{
keywords.push(id);
$("#keywords-row").append("<td><img src=\"images/delete.png\" class=\"delete_filter\" /> " + id + "</td>");
}
}
);
$(".delete_filter").click(
function(){
($(this)).remove();
}
);
function startTail(){
clearInterval(interval);
interval = setInterval(
function(){
$.getJSON("ajax.php?function=tail&pointer=" + pointer + "&nocache=" + new Date(),
function(data){
pointer = data.pointer;
$("#tail_print").append(data.log);
scroll.scrollTop = scroll.scrollHeight;
});
}, 1000);
}
PHP代碼:
function tail(){
$file = "/path/to/the/log/filelog.log";
$handle = fopen($file, "r");
clearstatcache();
if ($_REQUEST['pointer'] == '') {
fseek($handle, -1024, SEEK_END);
} else {
fseek($handle, $_REQUEST['pointer']);
}
while ($buffer = fgets($handle)) {
$log .= $buffer . "<br />\n";
}
$output = array("pointer" => ftell($handle), "log" => $log);
fclose($handle);
echo json_encode($output);
}
這樣做的整個目的是允許用戶過濾日誌結果。因此,用戶執行一個操作,該操作開始startTail()
和$.getJSON()
檢索由PHP函數構建的JSON對象並打印結果。作品完美無瑕。現在我想讓用戶選擇過濾進入的拖尾項目。用戶單擊過濾器按鈕,jQuery將過濾器文本添加到keywords
數組中,然後使用keywords
數組篩選來自JSON對象的data.log
,然後將其附加到屏幕上。
我也有一個不起作用的刪除過濾器功能。也許有人可以幫助我。
謝謝。我添加了PHP代碼來提供幫助。如果你認爲我應該在服務器端進行過濾,那麼我將如何修改我的PHP函數來執行此操作? – amlane86 2012-01-12 19:53:51
數據在日誌文件中看起來像什麼?你過濾了什麼?您希望將關鍵字傳遞給服務器,並且如果給定的日誌條目與它們匹配,則不會包含它。 – aepheus 2012-01-12 21:44:05