2012-03-27 3 views
2

MySQL 데이터베이스에 대한 쿼리를 처리하도록 설계된 PHP 파일을 사용하는 AJAX 페이지 요청이 있습니다. PHP 파일은 정상적으로 작동하지만, 어떤 이유로 그것은 나와 잘 맞지 않습니다. 여기에 내가 가진 무엇 :JSON 객체가 정의되지 않았습니다.

{"results":[{"ID":"12","area":"Hoboken","bedrooms":"5","fullbath":"3","halfbath":"1","remarks":"No remarks to speak of.","sqft":"2500","photos":null,"price":"1000","fee":null,"realtor":"Jane Doe","phone":"555-555-5555","address":"10th & Willow","bix":"1"}]} 

하지만 최대한 빨리으로 변경으로 :

function updateForm(){ 
     ID = $('#listings').val(); 
     $.ajax({ 
      type: "POST", 
      url: 'query.php', 
      data: "query=true" + 
        "&id=" + ID, 
      datatype: 'json', 
      success: function(data) { 
       alert(data.results); 
       updatePreview(); 
      } 
     }); 
    } 

팝업 바로 정의되지 않은 말한다

function updateForm(){ 
     ID = $('#listings').val(); 
     $.ajax({ 
      type: "POST", 
      url: 'query.php', 
      data: "query=true" + 
        "&id=" + ID, 
      datatype: 'json', 
      success: function(data) { 
       alert(data); 
       updatePreview(); 
      } 
     }); 
    } 

과 함께 나에게 팝업을 제공합니다.

궁극적으로 정보를 분석하고 이에 따라 페이지를 업데이트하고 싶지만이 JSON 개체의 속성에 액세스 할 수없는 것 같습니다. 무슨 일이야?

편집 :

여기 PHP 파일의 코드입니다 :

if (isset($_POST['query'])){ 
    if (isset($_POST['id'])){ 
     $query = 'SELECT * FROM bix WHERE ID=' . get_post('id'); 
     $listing = mysql_query($query); 
     print_json($listing); 
    } 
} 
function print_json($var){ 
    $output = array(); 
    while($row = mysql_fetch_assoc($var)) { 
     $output["results"][] = $row; 
    } 
    echo json_encode($output); 
} 

function get_post($var) 
{ 
    return mysql_real_escape_string($_POST[$var]); 
} 
+0

서버 측 코드를 게시 할 수 있습니까? –

+0

만약 당신이 console.log() 둘 다 얻는다면? –

+0

어쩌면 당신은 T를 대문자로 dataType ... – Timmerz

답변

1

아약스 호출에서 dataType의 T를 대문자로 시도 했습니까?

1

당신은 console.log(data) 대신, 이것으로 당신은 당신이 데이터에 액세스하는 데 사용할 수있는 키를 볼 수 있습니다.

0

하면 data.id 또는 data.area을 data.results 대신 데이터를 사용하거나 대상으로 시도하고 당신이 데이터가이 있다는 것을 의미 경고 팝업에 문자열을 표시하는 경우가

2

와 대는지 JSON이 아닌 string입니다. JSON의 경우 [Object object]를 표시합니다.

응답 유형을 확인하십시오. 그것은 applicaton/json 또는 applicaton/javascript 여야하며 text/plain 또는 이와 비슷한 것이어야합니다.

업데이트 : 또한 서버가 전체 문자열을 따옴표로 반환하지 않는지 확인하십시오. 예 : "[..]"- 그저 문자열 일뿐입니다. FireBug 또는 Chrome 개발자 도구를 사용하여 실제 응답을 확인하십시오. jQuery가 제대로 처리하지 못하는 이유를 이해하는 데 도움이 될 수 있습니다.

+0

이것은 재미있는 그러나 jQuery 워드 프로세서에 따르면 데이터 형식 : 'json', 당신을 위해 해제 해야하는 ... 당신은 서버 사이드 코드를 게시 할 수 있습니까? –

+0

괜찮아. 거기있어. – mavix

1

나는 json..it의 다시 내가 믿는 문자열로 오는 구문 분석으로 돌아오고 생각하지 않는다 ...

사용 :

var x = jQuery.parseJSON(data); 
alert(x.results) 
+0

그래야지. 설명서에서는 데이터 유형 'json'이 문자열이 아닌 JSON 객체를 반환한다고 설명합니다. – mavix

+0

ajax 호출에서 dataType의 T를 대문자로 시도 했습니까? – Timmerz

+0

아, 그건 완전히 문제였습니다. – mavix

0

유진이 지적한 바와 같이, 데이터가 문자열 . 시험해보기 :

var stuff = eval(data); 
alert(stuff.results); 

EDIT :이 방법이 효과적이지만 jQuery.parseJSON은 아마도 더 시원합니다.

관련 문제