2009-10-21 3 views
0

jQuery에서 JSON을 파싱하는 중 놀고 있는데 문제가 있습니다. JSON 객체에서 'time'값을 확인하고 싶습니다. 문자열 내 서버에서 반환되는 jQuery로 JSON을 파싱하는 데 문제가 있습니다.

$.ajax({ 
    url: 'do_chat.php5', 
    type: 'post', 
    data: ({'message':'','poster':poster,'logged_in':logged_in}), 
    dataType: 'json', 
    success: function(data) { 
     $.each(data, function(interval, message) { 
     if(message['time']) { 
    $('#chatWindow').append('<p>hi</p>'); 
     } 
}); 
    } 
    }); 

은 다음과 같습니다 :

{ "포스터": "", "메시지가 여기 내 재판 기능이 없다": "메시지 없음", "시간":! 1256084677 }

$ .each 구문에 대해 잘 모르겠습니다. 나는 php assoc 배열로 삶을 시작한 JSON 문자열을 인코딩하기 위해 PHP를 사용하고 있습니다. 실수가 많아 도움이된다면 틀림 없습니다.

편집 : 추가 질문 - PHP로 JSON 배열을 생성하려면 어떻게합니까? 순간 나는 하나의 객체를 생성하기 위해 사용

$messages = mysqli_fetch_assoc($new_res); 
$msg = $messages["content"]; 
$who = $messages["poster"]; 
$time = $messages["time_added"]; 
$message = array(
    'poster' => $who, 
    'message' => $msg, 
    'time' => $time 
); 

echo json_encode($message); 

을하지만 있다면 나는 그렇게 어떻게 내 데이터베이스 쿼리에서 둘 이상의 행을 얻을?

+0

어떤 오류가 있습니까? – gn22

답변

2

코드의 문제점은 단일 JSON 객체 {"poster":"","message":"No messages!","time":1256084677}을 반환한다는 것입니다. 그러나 $.each을 사용하여 반복합니다.

$.each은 배열을 반환하고 배열을 반환하지 않으므로 대신 $.each이 JSON 객체의 요소를 루핑합니다. 당신이 가질 수 있도록, [{"poster":"","message":"No messages!","time":1256084677}]

또는

$.each를 제거 :

코드를 해결하려면, 당신은 당신의 서버가 같은 배열을 반환 확인하거나 필요

$.ajax({ 
    url: 'do_chat.php5', 
    type: 'post', 
    data: ({'message':'','poster':poster,'logged_in':logged_in}), 
    dataType: 'json', 
    success: function(data) { 
     if(data['time']) { 
      $('#chatWindow').append('<p>hi</p>'); 
     } 
    } 
}); 
0
$.ajax({ 
    url: 'do_chat.php5', 
    type: 'post', 
    data: ({'message':'','poster':poster,'logged_in':logged_in}), 
    dataType: 'json', 
    success: function(data) { 
     if (typeof data.time != 'undefined') { 
      $('#chatWindow').append('<p>' + data.poster + ' - ' + data.message + '</p>'); 
     } 
    }); 
}); 
0

나는 http://json.org에서 JSON 파서를 사용하게 :

$.ajax({ 
    type: "POST", 
    url: "getData.asmx/retrieveSubcontractorList", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    data: "{}", 
    success: function(result2) { 
     var toolsData = JSON.parse(result2.d); 

비결은 데이터가 d라는 속성에 실제로이었다.

관련 문제