jQuery getJ 관련 문제Chrome에서 로컬 파일을 사용하는 SON
JQuery의 $.getJ와 함께 XHR 요청을 사용하는 매우 간단한 테스트 페이지가 있습니다.SON 및 $.ajax 메서드.같은 페이지가 동작하는 상황도 있고 동작하지 않는 상황도 있습니다.특히 Ubuntu의 Chrome에서는 동작하지 않습니다.
Ubuntu 9.10 (크롬 5.0.342.7 베타판)과 Mac OSX 10.6.2 (크롬 5.0.307.9 베타판)에서 테스트 중입니다.
- Ubuntu/Chrome 및 Mac/Chrome에서 웹 서버에 파일을 설치하면 올바르게 작동합니다(여기에서 시험해 보십시오).
- Mac/Chrome에서 로컬 하드 드라이브에 파일을 설치하면 올바르게 작동합니다(파일:///...로 액세스).
- Ubuntu/Chrome의 로컬 하드 드라이브에 파일을 설치하면 실패합니다(파일:///...로 액세스).
3개의 작은 파일세트는 tar/gzip 파일로 http://issues.tauren.com/testjson/testjson.tgz 에서 다운로드할 수 있습니다.
작동하면 Chrome 콘솔에 다음과 같은 메시지가 표시됩니다.
XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:16Using getJSON
index.html:21
Object
result: "success"
__proto__: Object
index.html:22success
XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:29Using ajax with json dataType
index.html:34
Object
result: "success"
__proto__: Object
index.html:35success
XHR finished loading: "http://issues.tauren.com/testjson/data.json".
index.html:46Using ajax with text dataType
index.html:51{"result":"success"}
index.html:52undefined
동작하지 않으면 Chrome 콘솔에 다음과 같이 표시됩니다.
index.html:16Using getJSON
index.html:21null
index.html:22Uncaught TypeError: Cannot read property 'result' of null
index.html:29Using ajax with json dataType
index.html:34null
index.html:35Uncaught TypeError: Cannot read property 'result' of null
index.html:46Using ajax with text dataType
index.html:51
index.html:52undefined
성공 핸들러가 실행되고 있지만 XHR 요청은 표시되지 않습니다.Ubuntu/Chrome에서는 이전에 동작하고 있었는데, 뭔가 문제가 있는 것 같아 걱정입니다.Chrome을 제거하고 다시 설치했지만 소용이 없었습니다.
당신의 Ubuntu 시스템에서 로컬로 시험해 보고 문제가 있으면 말씀해 주시겠습니까?파이어폭스에서는 정상적으로 동작하고 있는 것 같습니다.
다른 방법은 디렉토리에서 로컬 HTTP 서버를 시작하는 것입니다.Python이 설치된 Ubuntu와 MacOs에서는 원라이너입니다.
Web 파일이 격납되어 있는 디렉토리로 이동합니다.
python -m SimpleHTTPServer
그런 다음 웹 브라우저에서 http://localhost:8000/index.html에 연결하여 페이지를 테스트합니다.
이것은 Chrome의 기존 문제.
다음은 버그 트래커의 링크입니다.
문제 40787: Ajax에서 로컬 파일이 로드되지 않음
Windows의 경우 Chrome이 AppData 폴더에 설치되어 있을 수 있습니다.
"C:\Users\AppData\Local\Google\"크롬\어플리케이션"
명령을 실행하기 전에 모든 Chrome 창이 닫혀 있고 실행 중이지 않은지 확인하십시오.그렇지 않으면 명령줄 매개 변수가 유효하지 않습니다.
chrome.exe --allow-file-access-from-files
js 파일에 json을 배치하여 글로벌 변수에 저장할 수 있습니다.비동기식은 아니지만 도움이 될 수 있습니다.
이 문제를 해결하는 또 다른 방법은 Flash Player의 로컬 전용 보안 샌드박스 및 외부 인터페이스 방법을 활용하는 것입니다.로컬 전용 보안 샌드박스를 사용하여 게시된 플래시 애플리케이션을 JavaScript에 요청하여 하드 드라이브에서 파일을 로드하고 플래시는 플래시의 ExternalInterface 클래스를 통해 데이터를 JavaScript로 되돌릴 수 있습니다.Chrome, FF, IE9에서 테스트해 봤는데 잘 작동합니다.관심 있는 사람이 있으면 기꺼이 코드를 공유하겠습니다.
편집: 구현용 구글 코드(http://code.google.com/p/flash-loader/) 프로젝트를 시작했습니다.
@Mike On Mac에서 터미널에 다음과 같이 입력합니다.
open -b com.google.chrome --args --disable-web-security
이 코드는 sheet.jsonlocal에서 browser-sync를 로컬 서버로 사용할 경우 정상적으로 동작했습니다.-그러나 리모트 서버에서 Chrome을 사용하여 sheet.json 파일용 404를 취득했습니다.Safari와 Firefox에서는 정상적으로 동작했습니다.- name sheet.json을 sheet로 변경.JSON. 그리고 리모트 서버에서도 작동했어요.또 이런 경험이 있는 사람?
getthejason = function(){
var dataurl = 'data/sheet.JSON';
var xhr = new XMLHttpRequest();
xhr.open('GET', dataurl, true);
xhr.responseType = 'text';
xhr.send();
console.log('getthejason!');
xhr.onload = function() {
.....
}
언급URL : https://stackoverflow.com/questions/2541949/problems-with-jquery-getjson-using-local-files-in-chrome
'sourcetip' 카테고리의 다른 글
Chrome 개발자 도구에서 요청 시간 보기 (0) | 2023.02.13 |
---|---|
온라인 코드 색칠 서비스가 있나요? (0) | 2023.02.13 |
JSONEncoder를 사용하여 null 값을 null로 인코딩합니다. (0) | 2023.02.13 |
Wordpress 용어 ID로 분류법 이름 가져오기 (0) | 2023.02.13 |
캔 각도JS ng-Keyup 패스는 어떤 키를 눌렀습니까? (0) | 2023.02.09 |