2012-12-11 5 views
0

나는 JSON URL 파일을 가지고 있는데, 나는이 파일을 가져 와서 li에 썼다. JSON 파일에 대한 링크는 https://www.inquicker.com/facility/americas-family-doctors.json입니다. 내 바이올린 파일 링크는 http://jsfiddle.net/VVnSC/17/입니다. 나는 각 위치에 대한 다음 시간으로 시간을 좁히려 고 노력하고있다. 따라서 각 위치 Brentwood, Smyrna 및 Spring Hill에 대해 1 시간 (다음 사용 가능한 시간) 만 있습니다. 또한 이름에 대시가 있기 전에 위치 이름을 제거하려고 시도하기 때문에 사람의 이름 만 표시됩니다. 모든 도움을 주시면 대단히 감사하겠습니다.JSON 데이터 배열

<!DOCTYPE html> 
<html> 
<head> 
<title>AFD TEST</title> 
<script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"> </script> 
<script> 
$(document).ready(function(){ 
$.getJSON('https://www.inquicker.com/facility/americas-family-doctors.json', 
    function(data){ 
    console.log(data.facility); 
    $.each(data.schedules, function(i, name){ 
     times='' 
      if (name.available_times.length){ 
       times='<ul>' 
       $.each(name.available_times,function(i,o){ 
        for (var i; i < 1; i++) { 
        times+='<li><a href="'+ name.available_times[0].url +'">'+o.when+'</a></li>' 
        } 
       }) 
       times+='</ul>' 
      } 
      else{ 
       times='<ul><li>No Time Available</li></ul>'      
      } 
     $('#names').append('<li>' + (name.name) + times + '</li>'); 
    }); 
}); 
}); 
</script> 
</head> 
<body> 
<ul id="names"></ul> 
</body> 
</html> 

답변

0

업데이트가이 코드

$('#names').append('<li>' + (name.name) + times + '</li>'); 

$('#names').append('<li>' + (name.name.replace(/.*?-\s/,'')) + times + '</li>'); 

이 시도하고 변경 파싱하고 일과 시간을 비교하는 것.

다음은 시간과 날짜를 구문 분석합니다 (작동 방법은 this fiddle 참조). 이것은 또한 date.js은 (는 바이올린에 리소스로 추가)이 필요합니다

$(document).ready(function(){ 
    $.getJSON('https://www.inquicker.com/facility/americas-family-doctors.json', 
     function(data){ 

      var earliest = {}; 
      var doctor = {}; 
      var links = {}; 
      $.each(data.schedules, function(i, name) { 
       var location = name.name.split(' - ')[0]; 
       var dr_name = name.name.split(' - ')[1]; 
       if (name.available_times.length) { 
        if (location in earliest) { // location has already been stored. 
         var newTime = parseAvailableDate(name.available_times[0].when); 
         if (newTime.isBefore(earliest[location])) { 
         earliest[location] = newTime; 
         doctor[location] = dr_name; 
         links[location] = name.available_times[0].url; 
         }      
        } 
        else { 
         earliest[location] = parseAvailableDate(name.available_times[0].when); 
         doctor[location] = dr_name; 
         links[location] = name.available_times[0].url;      
        } 
       }      
      }); 
      for (i in earliest) { 
       $("#names").append("<ul>Location: "+i+"<li>Doctor: "+doctor[i]+"</li><li>Time: <a href='"+links[i]+"'>"+earliest[i].toString("dddd dd MMMM yyyy H:mm tt")+"</a></li></ul>");   
      } 
    }); 
}); 

function parseAvailableDate(dateString) { 
    var trimmedString = dateString.replace(/^\s\s*/, ''); 
    var avTime=trimmedString.split(' ')[0], 
     ampm=trimmedString.split(' ')[1], 
     avDay=trimmedString.split(' ')[2]; 
    var avDate = Date.parse("next "+avDay); 
    avDate.addHours(avTime.split(':')[0]).addMinutes(avTime.split(':')[1]); 
    if (ampm == "pm" && avTime.split(':')[0] != "12") avDate.addHours(12); 

    return avDate; 
} 

편집

위치가 고정 당신이 마음에 주문이있는 경우, 그냥이 변경 :

  for (i in earliest) { 
       $("#names").append("<ul>Location: "+i+"<li>Doctor: "+doctor[i]+"</li><li>Time: <a href='"+links[i]+"'>"+earliest[i].toString("dddd dd MMMM yyyy H:mm tt")+"</a></li></ul>");   
      } 

에 :

  displayDetails("Brentwood", earliest, doctor, links); 
      displayDetails("Smyrna", earliest, doctor, links); 
      displayDetails("Spring Hill", earliest, doctor, links); 

이 함수를 작성하십시오 (see another fiddle) :

function displayDetails(location, earliest, doctor, links) { 
      $("#names").append("<ul>Location: "+location+"<li>Doctor: "+doctor[location]+"</li><li>Time: <a href='"+links[location]+"'>"+earliest[location].toString("dddd dd MMMM yyyy H:mm tt")+"</a></li></ul>");   
    } 
+0

이메일 : @ Fierytech.com –

+0

브렌트 우드, 스미르나, 스프링 힐 등의 위치에 대한 빠른 질문은 언제나 목록에 항상 사용 가능한 시간이 순서대로 채워지도록하고 있습니까? 현재 Smyrna의 위치에 다음 사용 가능한 시간이 있으면 사용 가능한 시간에 따라 위치가 변경됩니다. –

+0

@JasonWallace - 답변을 편집했습니다. 이 편집은 위치가 변경되지 않는다고 가정합니다. – mccannf

0

정규식을 사용해야합니다. 이름은 다음 nameShort에 위치 할

var regexp = /- (.*)/g; 
var nameShort = regexp.exec(name.name); 

처럼 뭔가 [1]

그래서 코드에서

var regexp = /- (.*)/g; 
var nameShort = regexp.exec(name.name); 
$('#names').append('<li>' + (nameShort[1]) + times + '</li>'); 
0

는 정규 표현식을 사용하여

$('#names').append('<li>' + (name.name) + times + '</li>'); 

을 대체하는 것은 더 나은 옵션입니다 무늬가있는 경우

,210

그냥, 나는 당신이 어떤 공상 날짜 & 시간 비교를해야 할 것 여기

http://jsfiddle.net/VVnSC/47/ 
+0

Regexp를 사용하여 이름 축소를위한 해결책은 매우 감사합니다. –