2014-03-26 3 views
0

json_encode가있는 PHP 파일에서 가져온 배열이 있습니다.jsonery에서 json 파싱하는 동안 문제가 발생했습니다.

[{"label":"Mississippi State, Mississippi","value":"mississ"}, 
{"label":"Mississauga, Ontario","value":"mississ"}, 
{"label":"Mississippi Station, Ontario","value":"mississ"}] 

이 배열은 동적입니다. 이 배열의 레이블에 경고하고 싶습니다.

JQUERY :

var obj = $.parseJSON(data); 
alert(obj.label); 

그것은 OBJ처럼 나에게 오류를주고는 null입니다.

편집 :

기본적으로 내가 드롭 다운 검색 상자에이 값을 넣을 :이 JQuery와 같은 plugin

AJAX :

$.ajax({ 
      url: "ajax/ir_populate_search.php", 
      dataType: "json", 
      type: "POST", 
      data: { 
       keyword: request.term, 
       path: path 
      }, 

success: function(data){ 
    var obj = $.parseJSON(data); 
    var availableCities = obj.label; 
    $("#txtLocation").autocomplete({ 
        source: availableCities 
       }); 
} 
+0

데이터 유형을 사용하지 않으면 아약스 전화 코드를 제공 할 수 있습니까? json 그러면 데이터에 응답 문자열이 없습니다. 그것의 data.responseText. $ .parseJSON (데이터.responseText); – Fisherman

+0

내 편집을 확인하십시오 .. json dataType을 사용하고 있습니다 .. –

+0

왜 json 객체의 parseJson을 수행하고 있습니까? 데이터가 이미 json이라는 뜻입니다. –

답변

1

json을 구문 분석 할 필요가 없습니다. 이미 json입니다. 이것을 사용하십시오;

$.parseJSON('[{"label":"Mississippi State, Mississippi","value":"mississ"},{"label":"Mississauga, Ontario","value":"mississ"},{"label":"Mississippi Station, Ontario","value":"mississ"}]') 

그냥 데이터를 사용하고 배열에 당신이 의지를 사용하고있는 값을 추가 :

$("#txtLocation").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "ajax/ir_populate_search.php", 
      data: { 
        keyword: request.term, 
        path: path 
      }, 
      dataType: "json", 
      success: function(data) { 
       response($.map(data, function(item) { 
        return { 
         label: item.label, 
         value: item.value 
        } 
       })); 
      } 
     }); 
    } 
}); 
+0

나를 위해 작동합니다. 여기 하나의 문제 만 있습니다. 검색 결과를 선택할 수 없습니다. 선택 후 텍스트 상자에 채워 져야합니다. –

+0

감사합니다 .. 작동 중입니다. –

0

당신은 JSON 객체를 사용하기위한 jQuery를 필요가 없습니다 자바 스크립트에서

그런 시도 :

$data = [{"label":"Mississippi State, Mississippi","value":"mississ"}, 
     {"label":"Mississauga, Ontario","value":"mississ"}, 
     {"label":"Mississippi Station, Ontario","value":"mississ"}] 

$data[0].label 
1

외관상으로는 작업 할 수있는 구조가 이미 있지만 Object이 아닙니다. . . 그것은 Objects의 배열, 그래서는 label 매개 변수에 액세스하려면 다음과 같이 인덱스를 제공하여 당신이보고 싶은 오브젝트를 식별해야합니다

data[n].label 

귀하의 예제를 사용하면 이러한 값을 얻을 것 , 다양한 인덱스 :

  • 데이터 [0] .label ==> 미시시피 주, 미시시피
  • 데이터 [1] .label ==> 미시 온타리오
  • 데이터 [2] = .label => 미시시피 역, 온타리오

그래서 그들 모두 각각의 항목에 대한 데이터가이 같은 것을 할 수있는 수를 통해 루프 :이 dataType: "json"을 할 경우, jQuery를 당신을 위해 JSON 구문 분석을 수행

for (i = 0; i < data.length; i++) { 
    . . . do something with: data[i].label . . . 
    . . . do something with: data[i].value . . . 
} 
0

을, 그래서 data 이미 자바 스크립트 객체입니다. var obj = $.parseJSON(data);을 제거하고 data과 직접 작업하십시오.

0

데이터는 다음과 같이 객체 에 JSON 문자열을 구문 분석하는 데 사용됩니다 이미 JSON 객체 $.parseJSON입니다 작동

$.ajax({ 
      url: "ajax/ir_populate_search.php", 
      dataType: "json", 
      type: "POST", 
      data: { 
       keyword: request.term, 
       path: path 
      },success: function(data){ 
      //data is already the array of objects 
      //just loop them 

      var availableCities = []; 
      for(i in data){ 
       availableCities.push(data[i].label) 
      } 


      $("#txtLocation").autocomplete({ 
        source: availableCities 
       }); 
} 
}) 
관련 문제