2011-08-24 5 views
0

EDIT 해결되었습니다. 그것은 아약스 호출 이전이었고, 따라서이 코드입니다. 답변 해 주셔서 감사합니다.Jquery json echo


이 문제는 아무도 없습니다. JSON 응답을 반환하는 PHP 스크립트에 AJAX 호출이 있습니다.

while($row = mysql_fetch_array($ret)){ 
    $temp = array(
    'id' => $row['id_reserva'], 
    'start' => $row['data_inicio'], 
    'end' => $row['data_fim'], 
    'title' => $row['descricao'] 
    ); 

    $js[] = $temp; 
} 

헤더 :

나는 배열로 데이터베이스에서 값을 가져

header('Content-type: application/json'); 

그리고 에코 :

echo json_encode($js); 

에는 반환, 무엇이든지 단지 널 없다 끈.

$temp = '[{"id":"3914", "start": "2011-08-25 09:00:00", 
"end":"2011-08-25 18:00:00", "title":"asdasdasd"}, 
{"id":"3915", "start": "2011-08-25 09:00:00", 
"end":"2011-08-25 18:00:00", "title":"asdasdasd"}]'; 

echo $temp; 

의미가 있습니다 : 무엇 정말 날 귀찮게한다 대신이의 내가 코드에서 직접 이전 결과와 JSON 문자열을 만드는 경우이다. 파일 코드화 변경, 문자열 비교, 문자 문제 확인, 아무 것도 시도하지 않았습니다.

아무도 없습니까?

건배

+0

DB 쿼리가 실제로 작동합니까? 오류가 있거나 빈 결과 집합을 반환하면 빈 json 출력을 얻게됩니다. –

+0

@Marc B - 네, 작동합니다. 나는 json_encode의 생성 된 결과를 사용하여 직접 ($ temp) echoed 문자열을 생성했다. –

+0

크롬 개발 도구 (콘솔에서 마우스 오른쪽 버튼으로 클릭)에 HTTPrequest를 로깅하고 아약스 호출이 실제로 완료되면 콘코 솔 로그 링크를 클릭하십시오. 요청이 새 탭에서 열리 며 결과가 무엇이고 그 내용이있는 경우 (json이 "텍스트"로 표시됨) 확인할 수 있습니다. – roselan

답변

2

인코딩해야합니다. 당신은 JSON으로 출력하지 않을

echo json_encode($js); 
+0

죄송합니다. 디스플레이 코드에서이를 잊어 버렸습니다. 그것은 거기에, 그것으로 작동하지 않습니다. –

+0

json_encode가 확실히 거기에 있습니다 .. 저자가 질문을 수정 했습니까? – Evert

+0

네, 그렇습니다. 댓글에 답글을 올렸습니다. 위의 코드에 넣는 것을 잊어 버렸습니다. –

1

시도?

echo json_encode($js); 

jQuery가 응답을 받고 JSON을 구문 분석 할 수없는 경우 사용자가 경험 한대로 빈 문자열을 반환합니다.

+0

죄송합니다. 디스플레이 코드에서 그 것을 잊어 버렸습니다. 그것은 거기에, 그것으로 작동하지 않습니다. –

1

을 : 당신은 JSON 인코딩 배열에 필요한

echo json_encode($js); 
+0

죄송합니다. 표시 코드를 잊어 버렸습니다. 그것은 거기에, 그것으로 작동하지 않습니다. –

0

제거의 프로세스 ..

  • 당신은 ($ JS)를 print_r의 출력을 얻을 수 있나요?
  • 머리글()을 꺼냅니다. 아무 것도 나타나나요?
  • error_reporting 및 display_errors가 켜져 있습니까?
  • 'js'($ js = array())를 초기화하지 않는 것 같습니다. 리터럴 문자열 'null'이 반환되면 쿼리에서 결과가 반환되지 않는다는 것을 의미 할 수 있습니다.

내가 스택 오버 플로우에 거의 모든 장황한 PHP의 requestion이 문을 추가 할 수 있습니다

단계로 코드 단계를 통해 이동하고 해당 지점에있을 변수의 내용을 기대 에코. 그렇다면 천천히 문제의 위치를 ​​격리 할 것입니다. 있는 그대로의 코드에는 아무런 문제가 없습니다.

+0

모두 끝냈습니다. 그것을 시험하기 위해 마지막에 두 개의 에코가있는 파일을 직접 호출했으며 정확히 동일합니다. 머리글이 없으면 동일한 결과가 나타나고 예를 켜면 오류가 발생합니다. 배열을 만들고 enconding하는 대신 while 블록에서 JSON 문자열을 생성하려고했습니다. 주사위가 없다. 나는 이것에 대해 좌절감을 느낀다. –

+0

그런 경우 여기에서 실행하고 테스트 할 수있는 것을 얻을 때까지 코드를 줄이십시오. 먼저 mysql 쿼리를 꺼내서 시작한다. 로컬로 실행할 수 있다면 문제가있는 곳을 알려줄 수 있습니다. – Evert

0

$js[] = $temp;으로 다차원 배열을 만든 다음 인코딩하지 않습니까? 방금 시도하십시오 json_encode($temp);

+0

그래, 각 줄마다 배열 ($ js [])에 병합되는 행을 만듭니다. $ temp 만 사용하면 마지막 결과 만 얻습니다. 어쨌든, 그것은 똑같이 작동하지 않습니다. 매우 이상합니다. –

+0

아마도 json_last_error 함수를 사용하여 무엇이 식별되는지보십시오. –

+0

jQuery (document) .ajaxError (function (event, request, settings, err)) 오류가 발생했습니다. 문서가로드 된 후 AJAX 호출이고 json_last_error가 PHP 함수 (이전에 실행 된)이기 때문에 결코 표시되지 않습니다. 모든 오류. –