2012-10-03 5 views
0

아래 코드는 JQuery UI를 사용하여 생성 된 자동 완성 입력의 일부입니다. 하지만 제 질문은 JQuery-AJAX 부분에만 관련되어 있습니다.JQuery.ajax의 이상한 동작

change: function(event, ui){ 
$.ajax({ 
type: "POST", 
url: "includes/c_t_v_choices.php", 
data: { filter: ui.item.value }, 
//dataType: "JSON", 
}).done(function(msg) { 
    c_t_v_choices = msg; 
    alert("Data Saved: " + c_t_v_choices); 
    $("#c_t_v").autocomplete("option", "source", c_t_v_choices); 
}); 

c_t_v.php 파일의 마지막 줄은 다음 코드는 현재

echo json_encode($return_arr); 

방법, 나는 PHP 파일에 의해 전송 된 경고에 유효한 데이터를 참조하십시오. 예는 다음과 같습니다

그러나
Data Saved: [{"label", "value"}, {"label", "value"}...] 

, 내가 줄 사용할 때 :

Data Saved: [object: Object], [object: Object] 

왜 이런 이상한 행동 :

dataType: "JSON", 

내가 같은 것을 볼 수 있습니까? 보조 노트에

, $ ("#의 c_t_v") 자동 완성 내가 (위의 코드의 일부입니다) 아래의 코드에서 제공하고있는 소스 받아들이는 왜 어떤 생각 :.

$("#c_t_v").autocomplete("option", "source", c_t_v_choices); 
+0

JSON이 JSON으로 변하고 JSON이 객체이기 때문에. –

+0

대신 console.log를 사용하십시오. 아이들이 경고 메시지를 보게됩니다. – h2ooooooo

+0

'alert()'은 문자열을 취합니다. PHP의'var_dump()'와는 다릅니다. – Orbling

답변

1
Data Saved: [{"label", "value"}, {"label", "value"}...] 

다음과 같이이 데이터에 로그온하십시오 : console.log(typeof your_data_var) - 문자열입니까?

JSON을 지정하면 jQuery는 반환 된 json STRING을 객체 배열로 변환하므로 점 표기법을 사용하여 json 계층 구조에 쉽게 액세스 할 수 있습니다. Parent.child.something.

그것은이다 당신이 당신이 console.log를 사용하는 것이 좋습니다 아니며, console.dir 편리하게 할 수 있습니다 경우 배열 :

PS를 사용하는 것보다 조회 더 우아하고 빠른로 JQuery와 JSON 응답을 처리하는 일반적인 방법 배열/객체를 찾고 Firebug를 검사하여 객체와 그 내용을 더 잘 이해할 수 있습니다.

+0

Firebug에서 변수 'msg'를 보았을 때 출력은 다음과 같습니다. "[{"label ":"City1 "}, {"label ":"City2 "}, {"label ":"City3 "} , { "label": "City4"}]. 위의 동작이 발생하는 이유에 대한 단서가 있습니까? –

+0

또한 최종 배열이 다음과 같이되도록하려면 무엇이 필요한지 말할 수 있다면 매우 유용 할 것입니다. [{label : "City1"}, {label : "City2"} ...] –

+1

변수를보고 변수의 콘솔 로그를 넣을 필요가 없습니다. Firebug의 콘솔 창에서 검사하십시오 JSON을 사용할 수있는 개체로 지정하려면 dataType : "JSON"을 지정하십시오. 작업 할 때 데이터를 콘솔에 기록하면 사용 가능한 개체라는 것을 알 수 있습니다. –