2012-02-06 7 views
1

나는 형태의 JSON 파일이 있습니다PHP에서 JSON 파일에 GET 요청을 수행하는 방법은 무엇입니까?

[{"label":"apple","desc":"fruit"}, 
{"label":"banana","desc":"fruit"}, 
{"label":"celery","desc":"vegetable"}, 
{"label":"plum","desc":"fruit"}, 
{"label":"","desc":"fruit"}] 
내가이 데이터를 GET 요청을 수행하는 방법에 대한 갈 것이라고 어떻게

? 예를

를 들어

http://www.mysite.com/data?desc=vegetable 브라우저에 [{"label":"celery","desc":"vegetable"}]을 표시 것이며

http://www.mysite.com/data?label=apple&desc=fruit 여기

내가하고 싶은 작업 예를 에뮬레이트하는 것입니다 브라우저에 [{"label":"apple","desc":"fruit"}]를 표시합니다 :

http://ws.geonames.org/searchJSON (아무 것도 반환하지 않습니다) http://ws.geonames.org/searchJSON?featureClass=P&style=full&maxRows=12&name_startsWith=paris (일치하는 도시 반환)

Jquery와 PHP는 내가 사용하고있는 도구입니다. 원격 JSONP 데이터 소스로 jQuery UI 자동 완성 기능을 사용할 수 있도록 설정하려고합니다. http://jqueryui.com/demos/autocomplete/#remote-jsonp

답변

2

데이터베이스 (예 : MySQL)에 저장하면 더 좋은 결과를 얻을 수 있습니다. 그런 다음 labeldesc 열을 기준으로 쿼리 할 수 ​​있습니다. 그런 다음 fetchObject으로 결과 행에 액세스하고 json_encode으로 개체를 JSON으로 직접 변환하십시오.

당신은 전달 무엇 GET 매개 변수에 따라 쿼리의 몇 가지 다른 버전이 필요할 수 있습니다.

+0

안녕 매튜, 충고에 감사드립니다. 나는 프로그래밍에 새로운 것이므로 용서하십시오. 하지만 내 MySQL 데이터베이스에 약 20k 항목이 있습니다. 쿼리를 실행하여 각 매개 변수별로 정렬 한 다음 결과를 10으로 제한했습니다. jQuery UI 자동 완성을 설정하고 지연을 0으로 설정합니다. 쿼리를 제안하는 데 소요되는 시간은 방화 광에 따라 키 입력 당 약 80ms입니다. json 파일에 20k 개의 항목을 모두 내 보낸 다음 json 파일에 대한 get 요청을 수행하여 처음 10 개의 일치 항목을 검색하면이 속도가 빨라 집니까? – user784637

+1

@LedZeppelin, 아니, 각 요청에 대한 JSON 구문 분석이 빠를 것이라고 생각하지 않습니다. [indices] (http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html)를 추가하여 쿼리 시간을 향상시킬 수 있습니다. –

+0

오케이 괜찮아. json으로 시도해보고 새로운 것을 배우기 만하면되지만 원격 데이터 소스에 만족합니다. – user784637

2
$.ajax({ 
     type: 'GET', 
     url: '/getFood/', 
     dataType: 'json', 
     success: function(data) { 
      // do whatever you want with the data here (like show in a div) 
     }, 
     // replace with whatever you wanna send in the querystring 
     data: {'desc':'vegetable',}, 

    }); 

를 서버 측에서 귀하의 GET 요청에서 '내림차순'매개 변수를 확인하고 적절한 응답을 보냅니다.

+0

get 요청이 완료된 후 브라우저에서 json 형식으로 레이블과 설명을 표시하려면 어떻게합니까? 전의. 'http : //www.mysite.com/data? desc = vegetable'는 브라우저에서'{{label ":"셀러리 ","desc ":"야채 "}]'를 표시합니다. – user784637

+0

대신 'json'이라는 데이터 유형을 사용하여 'html'을 사용하고 인코딩 된 json 문자열을 서버 측에서 HTML로 작성하면 브라우저는이를 단순히 표시해야합니다. – Sid

+0

@Sid, "text"가 더 적절할 것입니다. –

관련 문제