2012-10-22 3 views
1

나는 빠른 $.get (url, function (response) {/ * ... * /})를 사용하여 데이터를로드하는 jQuery를 사용하는 JavaScript가 약간있다. 데이터는 스트레이트 업 텍스트 파일로 해당 응답 함수의 JavaScript가 처리합니다.내 AJAX 요청이 파일 확장자에 따라 오류를 발생시키는 이유는 무엇입니까?

이 아주 잘 나를 위해 일했지만, 난 그냥 내 컴퓨터에서이 문제에 달렸다 : 동일한 코드를 사용하여, 지금 오류가 말을 얻을 :

XML Parsing Error: not well-formed Location: moz-nullprincipal:{74091275-3d54-4959-9613-5005459421ce} Line Number 1, Column 16: image:tiles.png; ---------------^

내가 다른 서버에서이를로드하는 경우, 그것은 완벽하게 작동합니다. 그것은 내 자신의 PC에서이 오류가 발생했을 때만입니다 (이전에 우분투를 실행하고 Apache로 페이지를 서비스하는 내 PC에서도 완벽하게 작동했음을 참고하십시오). 많은 headbanging 후에, 내가로드 할 파일 이름의 확장자를 변경하면 잘 동작한다는 것을 발견했다. 이 파일은 이전에 "test.sprite"라는 이름으로 저장되었으며 오류가 발생했습니다. "test.txt"로 이름을 변경하면 잘로드됩니다.

이 오류는 내 시스템의 최근 업그레이드와 일치합니다. 우분투 10.10을 12.04로 업그레이드했습니다. 나는 그것이 아파치 설정에 어떤 종류의 업데이트가 있다고 가정하고 있는데, 이는 파일의 확장자에 따라 다른 헤더를 보내는 것을 알아 채지 못했다. (여기에있는 두 개의 파일은 동일하다. - .txt는 실제로는 .sprite에 대한 심볼릭 링크).

그래서 나는 당면한 문제에 대한 해결책을 가지고 있지만 시스템의 특질에 굴복하지 않을 것입니다. 어떻게 파일 이름을 바꾸지 않고이 문제를 해결할 수 있을지 궁금한가요?

+0

요청과 함께 보내는 매개 변수는 무엇입니까? 데이터 형식? –

+1

헤더가 잘못되었거나 존재하지 않으며 $ .ajax의 dataType을 설정하지 않으면 루트가 될 수 있습니다. 하나 또는 둘 다를 설정하여 문제를 해결해야하며 둘 다 설정하는 것이 이상적입니다. AJAX 요청에 대해 매우 쉽게 데이터 유형을 설정할 수 있습니다. – charlietfl

답변

1

저는 아파치 전문가가 아니지만, 올바른 방향으로 당신을 가리키는 것과 균열이 있습니다.

정의되지 않은 경우 jQuery AJAX 함수는 Apache가 보낸 모든 헤더가 content-type이라고 가정합니다. Chrome에서 코드를 실행하고, 개발자 도구 (Ctrl + Shift + J)를 열고 '네트워크'를 선택하여 응답이 무엇인지 쉽게 확인할 수 있습니다. 관련 요청을 클릭하면 내용 유형을 포함하여 헤더가 다시 표시됩니다.

Apache 구성에서 스프라이트의 content-type이 정의되지 않았을 수 있습니다. 당신은 다음 줄에 이것을 추가 할 수 있습니다

AddType 'text/plain; charset=UTF-8' .sprite 

이 아파치에 의해 구문 분석 구성 파일에 있어야합니다 - 버전이 apache.conf에 될 수 httpd.conf 파일 또는 다른 파일에 따라 달라집니다.

이 정보가 도움이되었거나 최소한 올바른 방향으로 안내해주기를 바랍니다. 아파치를 재시작하기 전에 configtest를 기억하십시오!

+0

매력처럼 작동했습니다! 감사! –

0

응답 헤더의 content-type을 확인하고 서버와 로컬 컴퓨터에서받은 헤더가 동일한 콘텐츠 유형, 즉 동일한 파일 유형, 동일한 인코딩, 즉 "content- type : text/html; charset = UTF-8 "을 입력하십시오.

관련 문제