JSON과 함께 파일에서 값을 읽는 코드 조각이 있습니다. 전체 일치를 표시하고 모든 데이터를 보여주는 방식으로 필요한 결과를 표시합니다. 항상 내가 필요로하는 것이 아니야. 내가 CSV 파일로 출력 코드를 시작했지만, 데이터의 양 때문에이, JSON (참조 : This question을)에 따라서 스위치가 너무 느렸다JSON 부분 히트 결과 표시
는다음 나는 JSON과 지금 가지고있는 코드입니다 같이
$(document).ready(function() {
var airports; //Prepare variable for storing JSON data
d3.json("airport.json", function(data) {
airports = data; //put the JSON data into an easy to call variable
continueCode(); //This is so we can use the JSON data outside of this call
});
function continueCode(){
var result; //Prepare result variable for usersearches
//User is typing in departure field
$(".input-leave").on("keyup paste", function(){
$("#display").empty();
//Grab user input
var userInput = $(".input-leave").val();
if(userInput != ''){
console.log("User input: "+userInput);
//console.log(airports[0]["Country Code"]);
for(var i=0; i<airports.length; i++){
/* Prepare Variables for checking columns of JSON
cnCode = Country Code
ctCode = City Code
stCode = State Code
apCode = Airport Code
apName = Airport Name
*/
var cnCode = airports[i]["Country Code"],
ctCode = airports[i]["City Code"],
stCode = airports[i]["State Code"],
apCode = airports[i]["Airport Code"],
apName = airports[i]["Airport Name"];
//Check if user input matches one of our variables
//This shows the airports on an exact match
if((userInput.toLowerCase() == cnCode.toLowerCase()) || (userInput.toLowerCase() == ctCode.toLowerCase()) || (userInput.toLowerCase() == stCode.toLowerCase()) || (userInput.toLowerCase() == apCode.toLowerCase()) || (userInput.toLowerCase() == apName.toLowerCase())){
$("#display").append("Country Code: "+cnCode+", City Code: "+ctCode+", State Code: "+stCode+", Airport Code: "+apCode+", Airport Name: "+apName+"<hr>");
}
//This results in every airport being shown at all times
if((userInput.toLowerCase().indexOf(cnCode.toLowerCase())) !== -1 || (userInput.toLowerCase().indexOf(ctCode.toLowerCase())) !== -1 || (userInput.toLowerCase().indexOf(stCode.toLowerCase())) !== -1 || (userInput.toLowerCase().indexOf(apCode.toLowerCase())) !== -1 || (userInput.toLowerCase().indexOf(apName.toLowerCase())) !== -1){
$("#display").append("Country Code: "+cnCode+", City Code: "+ctCode+", State Code: "+stCode+", Airport Code: "+apCode+", Airport Name: "+apName+"<hr>");
}
}
}else{
$("#display").empty();
}
});
}
});
나는 지금 데이터를 읽는 2 가지 방법이 있습니다. 하나는 전체 문자열 일치로 데이터를 표시하고 다른 하나는 모든 문자열에 데이터를 표시하는 것입니다. 내가 필요한 것은 데이터가 부분 문자열에 표시되도록하는 것입니다 (예 : 사용자가 'Am'을 입력하면 모든 열에 'am'으로 시작하는 결과가 표시됨).
저는 여기와 Google에서 살펴 보았습니다.하지만 사용자가 입력을 보내고 결과가 ID와 이름과 같은 부분 데이터 만 표시하는 것이므로 데이터를 표시해야합니다. 사용자가 데이터를 삽입하여 나를 위해 작동하지 않는다면이 문제를 빠르고 쉽게 해결할 수 있습니까? 저를 위해 할 수있는 JSON 플러그인을 찾을 수 없었습니다. ElasticSearch에서 시도해 보았습니다.하지만 어떻게 시작해야하는지 잘 모르겠습니다.
자동 완성 ({ 출처 : 공항 }) '과 같이 시도했지만 결과가 계속 표시되지 않습니다. Jquery-UI를 사용하고 있습니다. 1.12.1 및 Jquery 1.12.4 –
답변으로 [여기] (http://stackoverflow.com/questions/11435433/jquery-ui-autocomplete-with-json) _ 당신은 배열로 돌아갈 개체를 변환해야합니다 jQueryUI expects_ –
당신의 대답과 주석에 기반하여 여러 가지를 시도했는데, 그 중 하나는 아무것도하지 않는 것처럼 보입니다.이 코드는'$ (". input-leave"). 자동 완성 ({minLength : 2 ($. grep (airports, function (item)), source : function (request, response) {var matcher = new RegExp ("^"+ $. ui.autocomplete.escapeRegex (request.term), "ig"); {return matcher.test (item);}));}});은 항상 False를 반환합니다. 어쩌면 내가 뭘 잘못하고 있는지 볼 수있는 예가 있을까요? –