2011-04-12 2 views
0

나는 최근 1.5으로 업그레이드를 호출 갔지 $ 및 기능 :JQuery와 1.5 중단 된 1.4

function showData(id) { 

$.get("/url/getdata", {id : id}, function(data) { 
$("#dialogData").html(data); 
$("#dialogData").dialog({width: 500, modal: true, zIndex:22000}); 
}, "json"); 
} 

는 더 이상 1.5의 추가와 함께 작동하지 않습니다.

파이어 버그를 보면 올바른 데이터가 반환되지만 콜백을 입력하면 기능이 중단됩니다. 모든 것이 단순히 멈 춥니 다.

어떻게 해결할 수 있습니까? 저는 1.5에서 Ajax 호출에 대한 변경 사항을 읽었습니다. 그러나 프로젝트를 통해 천건이 넘는 호출을 받았습니다. -> 모든 것을 테스트하고 버그를 테스트하는 것조차 생각조차 할 수 없습니다.

편집 : 이상하게도 dataType에 "json"대신 "text json"을 입력하면 작동합니다. 나는 모든 코드를 검토하고 실행 가능한 옵션이라고 생각하지 않는다 ...

편집 2 : json_encode ($ string)을 반환하는 대신 json_encode (array ("string"=> $ string)), 그리고 나서 $ (element) .html (data.string)을했다. 이 중 하나가 작동하지 않았고이 호출에서 얻은 JSON 데이터가 jsonlint.com에서 유효합니다.

편집 3 : json_encode 출력 이전에 시도한 설정 헤더가 작동하지 않았습니다. 지금까지 유일한 해결책은 데이터 유형을 텍스트 json으로 설정하는 것이 었습니다.

+1

JSON을 사용하고 있지만 HTML로 직접 입력하려고합니다. 아마도 데이터 유형이 HTML 일 필요가 있을까요? 내 생각 엔 서버가 데이터 유형에 맞는 Content-Type 헤더를 출력하지 않고 jQuery가 헤더를 사용하여 컨텐츠 유형이 무엇인지 추측하려고한다. –

+0

아니요, 방금 JSON을 사용하여 PHP의 데이터를 전달합니다. PHP는 JSON 헤더와 json_encodes를 에코합니다. 지금까지 1.4에서 훌륭하게 작동했습니다. – Swader

+0

예, PHP가 JSON을 제대로 인코딩한다는 것을 알고 있지만'header ('Content-Type : application/json');을 호출해야 jQuery가 데이터 유형을 올바르게 추측 할 수 있습니다. 그 중 하나 또는'$ .getJSON'을 사용할 수 있습니다. –

답변

0

나는 범인을 찾았습니다. 대기열 및 아약스 호출 중단을 허용하는 ajax 확장 프로그램 인 queue.js입니다. jquery의 아약스가 확장되어서 아약스가 깨졌습니다. 이제 호환성을 복원하는 방법을 찾고 나는 모두 좋습니다.

모두에게 감사드립니다!

1

html() 함수로 데이터를 사용하지만 JSON 데이터가 필요합니다. 되돌아 오는 mime 형식을 살펴보고 데이터가 JSON이 될 것으로 예상하는지 확인하십시오.

+0

원래 게시물의 2 번째 댓글보기. – Swader

0

서버 측에 Content-Type 헤더를 설정해야하는 것처럼 들립니다. PHP는 이것을 쉽게 수행 할 수 있습니다. 인코딩 된 JSON 데이터를 출력하기 전에 언젠가 header('Content-Type: application/json');을 호출하십시오.

jQuery가 헤더를보고 자동으로 JSON을 구문 분석합니다. 나는 절대 버전에서는 아마도 dataType으로 더 엄격 할 것이라고 추측합니다. HTML로 구문 분석하려고하면 (PHP는 기본적으로 Content-Type: text/html을 전송하므로) 오류가 발생합니다.

일단 JSON 데이터가 있으면 html()과 함께 사용하도록 HTML을 빌드 할 수 있습니다.

+0

원본 질문에 대한 의견보기 헤더가 작동하지 않았습니다. 음 .. – Swader

관련 문제