sourcetip

jQuery getJ 관련 문제Chrome에서 로컬 파일을 사용하는 SON

fileupload 2023. 2. 13. 20:37
반응형

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

반응형